あなたはそうすることができます@ingredient = @recipe.ingredients.first
(それが本当に唯一のものである場合、どうすればこれを確実に知ることができるかわかりません.)
変数のように成分がすでに選択されていると仮定すると、他の ActiveRecord オブジェクトと同様にそれらを設定できます。
@ingredient = @recipe.ingredients.first
@ingredient.amount = 15 #or @ingredient.amount = params[:amount] (if you get the new value from POST)
@ingredient.unit = "Ounces"
@ingredient.save
レシピの各材料の属性を取得して何かを行いたいだけの場合は、ビューのいくつかの html タグにそれらを表示するなど、これを試すことができます。
@ingredients = @recipe.ingredients
@ingredients.each do |ingr|
info = %w[amount, brand, id, recipe_id , unit].map do |attr|
ingr.send(attr)
end
各内部ループの最後で、配列「情報」は1つの成分のすべての属性になります(情報配列にそれらを含めると仮定します)
これは関連付けを保存するために使用できるテーブルの例です。これは rails:through => :recipe_ingedient
メソッドで動作するはずです:
CREATE TABLE `recipe_ingredient` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`recipe_id` int(11) NOT NULL,
`ingedient_id` int(11) NOT NULL,
`created_at` datetime DEFAULT NULL,
`updated_at` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=59 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci$$