我正在尝试使用一个简单的应用程序学习嵌套属性。
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 %>
使用 :avatars(复数),字段不显示,而是适用于:
<%= f.fields_for :avatar do |m| %>
我错过了什么?
编辑
谢谢大家。
我发现问题:在票务控制器上
def new
@ticket = Ticket.new
@ticket.avatars.build #before this line is missing
end
现在我不知道如何在视图中显示这个嵌套值
@ticket.comments.name
给我头像控制器上未定义的方法"名称"
好吧,您当时正在创建一个头像,因为您必须使用单数。
如果要遍历多个头像,则必须使用foreach,<% @ticket.avatars.each do %>
。
另外,看看:http://www.createdbypete.com/articles/working-with-nested-forms-and-a-many-to-many-association-in-rails-4/