Rails - 在嵌套对象部分内动态构建嵌套对象(Cocoon)

时间:2014-12-20 14:21:01

标签: ruby-on-rails ruby-on-rails-4 nested-forms cocoon-gem

目前,我正在构建一个类似媒体的博客服务,用户可以添加合成文章正文的文章部分(文本,图像,youtube ......等)。

文章模型有很多ArticlePart模型并且动态创建嵌套表单,我正在使用cocoon gem。 这是我目前的代码。

_form.html.erb

<%= link_to_add_association("Add New Article Part", f, :article_parts,{:data => {"association-insertion-node" => "#article" }}) %>
 <ul class="sortable">
  <div id="article">
   <%= f.fields_for :article_parts  %>
  </div>
 </ul>

_article_part_fields.html.erb

<li class="nested-fields">
 <h2>Text Part</h2>
 <%= f.hidden_field :position %>
 <%= f.label :title %>
 <%= f.text_field :title %>
 <%= link_to_remove_association("Delete part", f) %>
 <h2>Insert New Article Part Here</h2>
</li>

以上工作正常,但我想要做的是显示“link_to_add_association”,其中“在此处插入新文章部分”块在_article_part_fields.html.erb中,以便用户可以在任何他们想要的地方添加新文章部分。

我尝试通过将父对象表单传递给嵌套对象表单来执行此操作,但此代码导致堆栈级别太深错误。

<li class="nested-fields">
 <h2>Text Parts</h2>
 <%= f.hidden_field :position, :class => "position" %>
 <%= f.label :title %>
 <%= f.text_field :title, :class => "fld-name required" %>
 <%= link_to_remove_association("Delete part", f) %>
 <h2>Insert New Part Here</h2>
 <%= link_to_add_association("商品", parent_form, :article_parts,{:render_options => {:locals => {:parent_form => parent_form}}, :data => {"association-insertion-node" => "#article" }}, :class => 'btn btn-ctrl btn-lg') %>
</li>

任何帮助都可以帮助您实现这一目标,或提出另一种方法来实现这一目标。

提前致谢!

0 个答案:

没有答案