Вложенные модельные формы - пересмотренный Railscast # 196 - Добавление полей через jQuery не работает
Я следил заRailscast № 196 пересмотрен и все прошло в основном нормально, но я не могу добавить новые поля во вложенную форму. "удалить поля " Функция работает хорошо, но после нажатия "link_to_add_fields»браузер переместится в верхнюю часть страницы, и новое поле не появится.
Есть уже куча вопросов к этому Railscast, какВот или жеВоти я попытался прочитать все из них, но большинство из них имеют отношение к оригинальным броскам с 2010 года. Я застрял на несколько часов, и я могу »Не могу понять, где моя проблема. Извините, если это ошибка новичка, я новичок в рельсах. Любая помощь могла бы быть полезна!
Я следил за пересмотренной версией # 196, используя Rails 3.2.13, Ruby 1.9.3
модели / post.rb
class Post < ActiveRecord::Base
attr_accessible :content, :title, :image, :postfiles_attributes
has_many :postfiles, :dependent => :destroy
accepts_nested_attributes_for :postfiles, allow_destroy: true
end
модели / postfile.rb
class Postfile < ActiveRecord::Base
attr_accessible :dropbox, :gdrive, :post_id
belongs_to :post
end
просмотров / сообщений / _form.html.erb
просмотров / сообщений / _postfile_fields.html.erb
postfiles.js.coffee
jQuery ->
$('form').on 'click', '.remove_fields', (event) ->
$(this).prev('input[type=hidden]').val('1')
$(this).closest('fieldset').hide()
event.preventDefault()
$('form').on 'click', '.add_fields', (event) ->
time = new Date().getTime()
regexp = new RegExp($(this).data('id'), 'g')
$(this).before($(this).data('fields').replace(regexp, time))
event.preventDefault()
application_helper.rb
module ApplicationHelper
def link_to_add_fields(name, f, association)
new_object = f.object.send(association).klass.new
id = new_object.object_id
fields = f.fields_for(association, new_object, child_index: id) do |builder|
render(association.to_s.singularize + "_fields", f: builder)
end
link_to(name, '#', class: "add_fields", data: {id: id, fields: fields.gsub("\n", "")})
end
end
Заранее, большое спасибо за вашу помощь!
ОБНОВЛЕНИЕ: я использую простую форму. Смотрите файл _form выше. Может ли это быть проблемой?
ОБНОВЛЕНИЕ II:
Я получаю сообщение об ошибке Javascript, но не уверен, что это может быть причиной проблемы: Chrome называет это "Uncaught SyntaxError: Неожиданное зарезервированное слово " и Firebug называет этоSyntaxError: неопределенный строковый литерал ", Ошибка указывает на эту часть кода JS:
loadData: function(data){
this.$editor.addClass('st-block__editor');
this.$editor.html("
<a class="pull-left">
<img class="media-object link-pic" src="" + data.thumbnail_url + "">
</a>
" + data.provider_name + "
<a href="#">" + data.title + "</a>
" + data.description + "
");
},
ОБНОВЛЕНИЕ 3:
Может ли контроллер сообщений быть частью проблемы?
Это мой posts_controller.rb
def new
@post = current_user.posts.new
@post.postfiles.build
respond_to do |format|
format.html # new.html.erb
format.json { render json: @post }
end
end
Еще раз спасибо за вашу помощь!