has_many fields_for和嵌套属性

时间:2015-01-29 11:46:34

标签: ruby-on-rails nested-forms nested-attributes fields-for

我尝试使用简单的应用程序学习嵌套属性。

 class Ticket < ActiveRecord::Base
   has_many :avatars
   accepts_nested_attributes_for :avatars

 end

 class Avatar < ActiveRecord::Base
   belongs_to :ticket
 end

 <%= form_for @ticket do |f| %>

  <%= f.label :name %> 
  <%= f.text_field :name %>

  <%= f.label :description %>
  <%= f.text_field :description %>

  <%= f.fields_for :avatar**s** do |m| %>
    <%= m.label :name %>
    <%= m.text_field :name %>
  <% end %>
  <%= f.button :submit, class: "btn btn-primary" %>
  <% end %>

使用:头像(复数)这些字段不会显示,而是适用于:

  <%= f.fields_for :avatar do |m| %>

我错过了什么?

修改

谢谢大家。

我发现问题:在故障单控制器上

      def new
       @ticket = Ticket.new
       @ticket.avatars.build #before this line is missing
      end

现在我不知道如何在视图中显示这个嵌套值

     @ticket.comments.name 

给我一​​个未定义的方法&#39; name&#39;在头像控制器上

1 个答案:

答案 0 :(得分:0)

嗯,你当时正在创建一个头像,因为你必须使用单数。

如果要迭代多个头像,则必须使用foreach,<% @ticket.avatars.each do %>

另外,看看: http://www.createdbypete.com/articles/working-with-nested-forms-and-a-many-to-many-association-in-rails-4/