如何在Rails 2.3中完成这项工作?
class Magazine < ActiveRecord::Base
has_many :magazinepages
end
class Magazinepage < ActiveRecord::Base
belongs_to :magazine
end
然后在控制器中:
def new
@magazine = Magazine.new
@magazinepages = @magazine.magazinepages.build
end
然后是表格:
<% form_for(@magazine) do |f| %>
<%= error_messages_for :magazine %>
<%= error_messages_for :magazinepages %>
<fieldset>
<legend><%= t('new_magazine') %></legend>
<p>
<%= f.label :title %>
<%= f.text_field :title %>
</p>
<fieldset>
<legend><%= t('new_magazine_pages') %>
<% f.fields_for :magazinepages do |p| %>
<p>
<%= p.label :name %>
<%= p.text_field :name %>
</p>
<p>
<%= p.file_field :filepath %>
</p>
<% end %>
</fieldset>
<p>
<%= f.submit :save %>
</p>
</fieldset>
<% end %>
问题是,如果我想提交一个杂志页面,activerecord投诉的集合,因为它是一个模型,而不是一个数组。
创建行动:
def create
@magazine = Magazine.new params[:magazine]
@magazine.save ? redirect_to(@magazine) : render(:action => 'new')
end
答案 0 :(得分:0)
我不是100%肯定你在问什么,但是如果你想要实例化一本新杂志,有很多杂志页面,你需要遍历每个杂志页面。像这样:
def create
@magazine = Magazine.new(params[:magazine])
if params[:magazinepages]
params[:magazinepages].each do |page|
@magazine.magazinepages.build(page)
end
end
# Save the model, do your redirection or rendering invalid model etc
end
答案 1 :(得分:0)
杂志:
accepts_nested_attributes_for:magazinepages
Magazine.new(params [:magazine])将自动为您处理对象层次结构