0

複雑なモデルに基づくフォームがあり、複数のオブジェクトをパラメーターに含めたいと考えています。

私のセットアップ:

Network.rb

class Network < ActiveRecord::Base                 # t.string "name"
  has_many :trackings
  has_many :installations, through: :trackings  
end

インストール.rb

class Installation < ActiveRecord::Base            # t.string "name"
  has_many :trackings
  has_many :networks, through: :trackings
end

追跡.rb

class Tracking < ActiveRecord::Base                # t.string "code
  belongs_to :network                              # t.integer "network_id",
  belongs_to :installation                         # t.integer "installation_id
end

新しいトラッキング オブジェクトを作成するときに、データベース内の各ネットワークをレンダリングし、:code のテキスト フィールドを追加したい新しいトラッキングのモックアップ

私のフォーム:

= form_for [:admin, @tracking] do |f|

  = f.select :installation_id, options_for_select(Installation.all.map { |i| [i.name, i.id] }), prompt: "Select an Installation"

  - Network.all.each do |network|
    = f.text_field :code
  = f.submit

現在、すべてのテキスト フィールドがレンダリングされますが、送信すると、最後のテキスト フィールドの最後の入力のみがパラメーターに入ります。どうすればそれらすべてを含めることができますか?

モデルに支えられていないフォームの場合、これを見つけましたが、私のフォームでは機能しません:

= text_field_tag "tracking[][code]"
4

2 に答える 2

0

問題は、ビューがレンダリングされると、すべてが配列をサポートしない HTML PUT に適した形式に変換されることです。各コード フィールドに異なる名前を割り当てる必要があります。たとえば、区切り記号の後にそれぞれの末尾に配列インデックスを追加します (:code-2たとえば)。各値には独自のパラメーターがあります。フォームが投稿されたら、区切り文字を使用して名前を分割し、 で始まる名前を見つけpost、配列インデックスを取得して、配列に再度割り当てることができます。

于 2013-08-04T22:55:20.637 に答える