我正在通过Rails指南(http://guides.rubyonrails.org/getting_started.html),并坚持第11项和第34项;建立一个多模型表格"。
这部分练习解释了将一个模型中的一个模型包含在另一个模型中......
我的问题是第二个模型的表单字段不显示..
代码完全按照练习(我甚至绝望,并从样本中直接复制和粘贴代码)
我的代码发布在下面..我花了几个小时将它与指南中的代码进行比较,它完全相同..有人能指出我可能出错的地方吗?
非常感谢提前。
这是包含部分
的代码<%= render :partial => 'tags/form',
:locals => {:form => post_form} %>
以下是我的部分内容
<p>Above - THIS IS DISPLAYING</p>
<%= form.fields_for :tags do |tag_form| %>
<p>Inside - THIS IS NOT DISPLAYING</p>
<div class="field">
<%= tag_form.label :name, 'Tag:' %>
<%= tag_form.text_field :name %>
</div>
<% unless tag_form.object.nil? || tag_form.object.new_record? %>
<div class="field">
<%= tag_form.label :_destroy, 'Remove:' %>
<%= tag_form.check_box :_destroy %>
</div>
<% end %>
<% end %>
这是我的Post模型,它被设置为接受标签的嵌套属性
class Post < ActiveRecord::Base
validates :name, :presence => true
validates :title, :presence => true,
:length => { :minimum => 5 }
has_many :comments, :dependent => :destroy
has_many :tags
accepts_nested_attributes_for :tags, :allow_destroy => :true,
:reject_if => proc { |attrs| attrs.all? { |k, v| v.blank? } }
end
答案 0 :(得分:7)
你做到了吗?
我们还在此表单的顶部添加了 @ post.tags.build 。这是为了 确保有一个新标签准备好填写其名称 用户。如果您不构建新标记,则不会显示该表单 因为没有新的Tag对象可以创建。
<% @post.tags.build %>
<%= form_for(@post) do |post_form| %>
…
如果这不起作用,请尝试将@post.tags.build
添加到PostController的new
方法中,看看是否会为您带来字段!