新しい2つの新しいモデルと単純なモデルの間にhas_and_belongs_to_many関係があることを知りたいと思います。製品には著者が多く、著者にはたくさんの製品があります。私が持っている製品のためのビューの一部の形式では、基本的なRoRアプリケーションのhas_and_belongs_to_manyリンクを保存
class Author < ActiveRecord::Base
has_and_belongs_to_many :products
end
class Product < ActiveRecord::Base
has_and_belongs_to_many :authors
end
:
私はこれを書いた
<p>Products</p>
<%= collection_select(:product, :author_ids, @authors, :id, :name, :prompt => " ", :multiple => true) %>
をしかし、私は、更新ボタンを押したときに、私は私ができるこの奇妙なメッセージが表示されます'Tは自分自身を解決:ProductsControllerの#更新中
NoMethodError 未定義のメソッドが `拒否':文字列
"1" のために0Rails.root:/ home/stephane/www/HABTM アプリケーショントレース|フレームワークトレース|完全なトレース アプリ/コントローラ/ products_controller.rb:63:block in update' app/controllers/products_controller.rb:62:in
アップデート」 要求
パラメータ: { "UTF8" => "AOE「 " "_method" => "置く"、 " authenticity_token "=>" 2> "2GlTssOFjTVZ9BikrIFgx22cdTOIJuAB70liYhhLf + 4 ="、 "product" => {"title" => "Letréordes Templiers"、 "original_title" => ""、 "number" => "1"、 "added_by" => ""、 "author_ids" => "1"}、 "コミット" => "アップデート製品"、 "ID" => "1"}
何が問題なの? product_idsに問題はありますか?私はインターネット上で "s"をpuしなければならなかったが、それが何を表しているのか分かりません....
authors_productsテーブルをキーにリンクする方法ドロップダウンメニューから返されますか? (ここでは「author_ids」=>「1」) Thx!
詳細情報: は、この情報に解決することができるが、それでも関係のない省:
collection_select("sales_agent", "customer_id", @customers, "id", "name")
あなたはID属性とname属性を持つ顧客のモデルを持っていたと仮定すると、これは正確に生成しないだろう上記のコード。だから我々はcollection_select呼び出しに渡す値を見て:
- 最初のパラメータは、コレクション(例えばsales_agent。)から一つの要素が含まれているモデルである
- は次が参照モデルのフィールド名です
- 次は、リストしたいアイテムのコレクションを含む変数です(例:@customers)
- 次はoptionタグのvalue属性です(例:customer id)
- 次はoptionタグの表示属性です(例えば。しかし、一瞬のリンクを、保存せずに、顧客名)
は、だから私は今
<p>Products</p>
<%= collection_select(:author, :author_id, @authors, :id, :name, :prompt => " ", :multiple => true) %>
を書き、それが働いていました...(のみ、通常のフィールドの更新が保存されている、あなたは別のモデルをHABTM関係のためauthor_products
と呼ば
'update'アクションに' app/controllers/products_controller.rb'コードを投稿してください。 – Bohdan