9

いろいろ検索してみましたが、思い通りにできません..ここに私の問題があります。

class Moving < ActiveRecord::Base
  has_many :movingresources, :dependent => :destroy
  has_many :resources, :through => :movingresources
end

class Movingresource < ActiveRecord::Base
  belongs_to :moving
  belongs_to :resource
end

class Resource < ActiveRecord::Base
  has_many :movingresources
  has_many :movings, :through => :movingresources
end

Movingresourcesなどの追加フィールドが含まれますquantity。「請求書」のビューに取り組んでいます。書くだけで関係全体を簡素化するformtasticのおかげで

<%= form.input :workers, :as => :check_boxes %>

そして、本当に素敵なチェックボックスリストを取得します。しかし、これまでのところわかっていないのは、「movingresource」の追加フィールドを、そのモデルの目的のフィールドの隣または各チェックボックスの下で使用するにはどうすればよいですか?

主にオブジェクトの配列を手動でループして適切なフォームを作成し、form.inputs 部分で :for を使用するかどうかにかかわらず、さまざまなアプローチを見ました。しかし、これらの解決策はどれもきれいではありませんでした (たとえば、必要なオブジェクトが構築または生成されておらず、それらの生成が混乱を引き起こしたため、編集ビューでは機能しましたが、新しいビューでは機能しませんでした)。

これに対するあなたの解決策を知りたいです!

4

3 に答える 3

8

さて、私はaccepts_nested_attributes_forの革命を見逃しました.これは、実際に機能していない理由を説明しています.

これで大きな一歩を踏み出すことができましたが、どこかで複雑な関係が複雑になると思います ^_^

class Moving < ActiveRecord::Base
    has_many :movingworkers, :dependent => :destroy
    has_many :workers, :through => :movingworkers
    accepts_nested_attributes_for :movingworkers
end


<% form.inputs :for => :movingworkers do |movingworker| %>
    <%= movingworker.inputs :worker, :quantity %>
<% end %>
于 2010-02-07T08:01:04.873 に答える
4

Formtastic の :label_method オプションが役立つ場合があります。例えば

<%= form.input :movingworkers, :label_method => :worker %>

また

<%= form.input :movingworkers, :label_method => Proc.new { |x| "#{x.worker} #{x.quantity}" } %>
于 2010-05-14T04:27:02.293 に答える
1

フィールドが新しいビューに存在しない場合は、それが新しいかどうかをテストし ( new_record? )、別のフィールド セットを提示することができます (部分的にラップする場合は、非常にクリーンなアプローチになる可能性があります)。

于 2010-02-03T22:19:15.337 に答える