0

プロジェクトで深くネストされたモデルを使用しています (simple_form と cocoon を使用)。ネストされたすべてのオブジェクトが新しい限り、すべてが正常に機能します。

私の問題は、既存の (ネストされた) オブジェクトからネストされたオブジェクトを作成したいということです。

これが私のモデルです

class Application < ActiveRecord::Base
    belongs_to :submitter
    has_one :composition

    accepts_nested_attributes_for :submitter, :composition
end

class Submitter < ActiveRecord::Base
    has_one :spouse
    has_many :children
    has_many :receipts
    has_many :applications

    accepts_nested_attributes_for :spouse, :children, :receipts, :applications
end

class Child < ActiveRecord::Base
    belongs_to :submitter
    has_many :receipts
end

作業プロセスは次のようになります。

新しいアプリケーション --> 新しい送信者 --> 新しい子

1 つのフォームからすべてを作成できます。

さらに、次のプロセスも実装したいと考えています。

新しいアプリケーション -->既存の送信者 --> 新しい子

既存のオブジェクトは、ドロップダウン リスト ボックスで選択する必要があります。

ビューの(簡略化された、動作する)コードは次のとおりです。

new.html.erb

<%= simple_form_for(@application)  do |f| %>
    <%= f.simple_fields_for :submitter do |submitter| %>  
        <%= render "submitter_fields", :f => submitter %>
    <% end %>
<% end %>

_submitter_fields.html.erb

<%= f.input :firstname %>
<%= f.input :lastname %>
<%= render "child", :f => f %>

_child.html.erb

<div id="childs">
    <%= f.simple_fields_for :children do |child| %>
      <%= render "child_fields", :f => child %>
    <% end %>
    <div class="links">
        <%= link_to_add_association 'Add child', f, :children %>
    </div>
</div>

_child_fields.html.erb

<div class="nested-fields">
    <%= f.input :firstname %>
    <%= f.input :lastname %>
    <%= link_to_remove_association "Remove child", f %>
</div>

ここで、既存のすべての送信者が取り込まれるドロップダウン リストを追加したいと考えています。例えば:

<%= f.assosciation :submitter %>

ここから問題が始まります。選択したサブミッターに新しい子を追加するためのフォームを作成するには、このオブジェクトをフォーム ビルダーに割り当てる必要があります。これを行う方法がわかりません。

誰かがこれを実装する方法を教えてもらえますか? それとも、このシナリオは単に不可能ですか?

前もって感謝します!

キリスト教徒

4

1 に答える 1

0

simple_fields_for は、オブジェクトの 2 番目の引数を取ります: https://github.com/plataformatec/simple_form/blob/master/lib/simple_form/action_view_extensions/form_helper.rb#L33既存の送信者を渡すと、おそらく機能します。

于 2013-01-28T14:54:54.843 に答える