Вложенные модельные формы - пересмотренный 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

<%= simple_form_for @post do |f| %>

  <%= f.fields_for :postfiles do |builder| %>
       <%= render 'postfile_fields', f: builder %>
  <% end %>
  <%= link_to_add_fields "Add File", f, :postfiles %>

<% end %>

просмотров / сообщений / _postfile_fields.html.erb

<fieldset>  
    <%= f.text_field :dropbox %>
    <%= f.hidden_field :_destroy %>
    <%= link_to "remove", '#', class: "remove_fields" %>
</fieldset>

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("
   <div class='st-block__inner'>
      <div class='media'>
        <a class='pull-left' >
          <img class='media-object link-pic' src='" + data.thumbnail_url + "'>
        </a>
        <div class='media-body'>
          <div class='link-source'>" + data.provider_name + "</div>
          <div class='link-title'> <a href='#'>" + data.title + "</a></div>    
          <div class='link-description'>" + data.description + "</div>  
        </div>
      </div>
    </div>
  ");
},

ОБНОВЛЕНИЕ 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

Еще раз спасибо за вашу помощь!

Ответы на вопрос(2)

Ваш ответ на вопрос