导轨指南 - 卡在多模型表格上

时间:2012-01-12 11:29:11

标签: ruby-on-rails

我正在通过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

1 个答案:

答案 0 :(得分:7)

你做到了吗?

  

我们还在此表单的顶部添加了 @ post.tags.build 。这是为了   确保有一个新标签准备好填写其名称   用户。如果您不构建新标记,则不会显示该表单   因为没有新的Tag对象可以创建。

<% @post.tags.build %>
<%= form_for(@post) do |post_form| %>
…

如果这不起作用,请尝试将@post.tags.build添加到PostController的new方法中,看看是否会为您带来字段!