fields_for not rendering - rails 3

Rya*_*yan 26 ruby-on-rails nested-forms fields-for

最后转移到Rails 3进行新项目,并且已经遇到了新手问题.

尝试做一个简单的嵌套表单.

2个型号:列表和任务

列表模型

class List < ActiveRecord::Base
  has_many :tasks, :dependent=>:destroy
  accepts_nested_attributes_for :tasks, :reject_if => lambda { |a| a[:name].blank? }
end
Run Code Online (Sandbox Code Playgroud)

任务模型

class Task < ActiveRecord::Base
  belongs_to :list

end
Run Code Online (Sandbox Code Playgroud)

列表控制器

def new
   @list = List.new
   3.times{ @list.tasks.build }
end
Run Code Online (Sandbox Code Playgroud)

列表/ new.html.erb

<% form_for :list, :url=>{:action=>"create"} do |f| %>
    <%= f.text_field :name, :class=>'big' %>
    <%= f.label :name, "ex: Today's Todos, Christmas List" %>

    <% f.fields_for :tasks do |builder| %>
        <p>
            <%= builder.label :name, "Task" %>
            <%= builder.text_field :name %>
            <%= builder.check_box :_destroy %>
        </p>
    <% end %>

    <p><%= submit_tag "Create List", :id => "submit", :name => "submit", :class => "form_submit", :disabled => false, :disable_with => "Please wait..." %></p>

<% end -%>
Run Code Online (Sandbox Code Playgroud)

使用debug @list我可以看到我在控制器中创建的3个任务,但是fields_for将不会呈现.

有任何想法吗?

bow*_*ior 81

在rails 3中,你应该使用<%=而不是<%for form_forfields_for.看看是否有帮助.

  • 很酷,很高兴你解决了问题.您可能希望将来查看https://github.com/plataformatec/simple_form或https://github.com/justinfrench/formtastic,以便更轻松地处理rails表单. (2认同)