[英]Adding empty record for nested attribute in rails
我正在使用Rails 4 / Ruby 2.0.0。 我有两个模型- Articles
和Graphics
。 Articles
has_many
Graphics
。 因此,在我的代码中,我试图将一个空记录添加到文章上的图形集合中,以便在表单中,将有一个空字段集来添加新记录。 我无法弄清楚为什么字段没有显示在表单上。
我尝试了多种构建图形集合的方法,但似乎没有一个可行的方法。 当然,我一定会缺少一些疯狂的小东西。
class Article < ActiveRecord::Base
has_many :graphics, :dependent => :destroy, :foreign_key => 'article_id'
accepts_nested_attributes_for :graphics,
:allow_destroy => true,
:reject_if => :all_blank
end
class Graphic < ActiveRecord::Base
belongs_to :article
validates_presence_of :path, :caption
end
...
<% f.fields_for :graphics do |g| %>
<div class="clear clearfix pad-b-20">
<div class="w-1-2 left f-left">
<div class="field">
<%= g.label :path %><br>
<%= g.text_field :path %>
</div>
</div>
<div class="w-1-2 left f-left">
<div class="field">
<%= g.label :caption %><br>
<%= g.text_field :caption %>
</div>
</div>
</div>
<% end %>
...
<%= form_for(setup_article(@article)) do |f| %>
module FormHelper
def setup_article(article)
article.graphics.build
article
end
end
...
after_initialize :build_graphics
private
def build_graphics
self.graphics.build
end
...
def new
@article = Article.new
@article.graphics.build
end
...
问题在于,对于form_for
和fields_for
都需要使用<%=
,因为它们会呈现表单的内容。
因此,要解决您的问题,您需要编写
...
<%= f.fields_for :graphics do |g| %>
Your content
<% end %>
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.