在Ruby on Rails 4.2中使用Cocoon gem的嵌套表单

时间:2015-08-04 18:45:45

标签: ruby-on-rails ruby forms ruby-on-rails-4.2 cocoon-gem

我正在使用Rails 4.2构建一个Web应用程序,我有一个名为Strategy的模型,它与Tactic模型有一个has_many关系。

要为策略创建视图,我需要在表单上有许多嵌套的策略。我一直在使用Cocoon gem开发这个视图。

到目前为止,我已经能够使表单在大多数情况下正常工作,但问题是我想在我的Tactic模型中添加Type属性。

对于一个给定的策略,我希望有一种给定类型的3种策略,以及另一种类型的2种模式。

问题在于渲染我的视图,所有五个模型都按顺序列出,没有任何空间可以放置我自己的HTML代码。

是否有一种简单的方法来分离出哪些是渲染的?现在,我的观点如下......

<%= form_for @strategy do |f| %>
    <div class="strategy">
        <%= f.label :name %>
        <%= f.text_field :name %>
    </div>

    <div class="tactics">
        <%= f.fields_for :tactics do |i| %>
            <%= render 'tactics_fields', f: i %>
        <% end %>
    </div>

    <div class="buttons">
        <%= f.button "Save Strategy", class: 'button' %>
    </div>
<% end %>

如果有人可以提供任何建议,我们将不胜感激。

1 个答案:

答案 0 :(得分:0)

您是否希望呈现表单,以便每个策略在其下方列出正好5个策略,其中3个是一种类型,2种是另一种类型?

如果是这样,您可以在控制器中执行此操作:

5.times do
  tactic = @strategy.tactics.build
  tactic.tactic_type = 'tactic_type'
end

另外,请注意,使用名为type的属性并不是一个好主意。请改用tactic_type之类的内容。