你可以@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
在每個內環陣列「信息」的端部將是一種成分的所有屬性。(假設將它們包含在信息陣列)
這是一個表,你可能的一個例子使用存儲的關聯,它應與軌道: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$$
所以你找到了你想要的食譜,你已經找到了食譜的配料。你想編輯這些成分之一的屬性嗎?或者你想爲之前選擇的配方添加新的成分嗎?或者是否有另一個您想要填充的成分的聯合表格? – holaSenor
食譜和配料上有一個連接表,用於保存與其相關食譜特定成分有關的信息,即每種成分的含量。 –