最后为了一个新项目转移到 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
任务模型
class Task < ActiveRecord::Base
belongs_to :list
end
列表 Controller
def new
@list = List.new
3.times{ @list.tasks.build }
end
列表/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 -%>
使用 调试@list 我可以看到我在 Controller 中创建的 3 个任务,但它 fields_for 不会呈现。
有任何想法吗?
最佳答案
在 rails 3 中,你应该使用 <%=
而不是 <%
为 form_for
和 fields_for
.看看是否有帮助。
关于ruby-on-rails - fields_for 不渲染 - rails 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4414934/