Ruby on rails 4 Rails 4-更新连接表属性,通过
这是我的问题的后续: 现在我知道了如何检索联接表属性并在视图中显示它们。但是我仍然找不到正确的方法来编辑和更新属性 型号:Ruby on rails 4 Rails 4-更新连接表属性,通过,ruby-on-rails-4,has-many-through,jointable,Ruby On Rails 4,Has Many Through,Jointable,这是我的问题的后续: 现在我知道了如何检索联接表属性并在视图中显示它们。但是我仍然找不到正确的方法来编辑和更新属性 型号: class Recipe < ActiveRecord::Base has_many :recipe_ingredients has_many :ingredients, through: :recipe_ingredients end class Ingredient < ActiveRecord::Base has_many :recipe_i
class Recipe < ActiveRecord::Base
has_many :recipe_ingredients
has_many :ingredients, through: :recipe_ingredients
end
class Ingredient < ActiveRecord::Base
has_many :recipe_ingredients
has_many :recipes, through: :recipe_ingredients
end
class RecipeIngredient < ActiveRecord::Base
belongs_to :recipe
belongs_to :ingredient
#there is an attribute t.text :amount
end
类配方
配方#编辑:
。。。
...
如上所示,这是一个多对多关系,每个食谱可能有几个成分。它工作正常,我可以选择与之关联的正确模型(使用collection_select)。但是我没有完成编辑和更新联接表属性的工作。我有两个想法:
意图:我想自己创建配方和配料模型,这已经完成了。用户将看到哪个配方使用了配料#show action中的配料,这也完成了。至于配方#show action,有一点不同,用户将看到它使用的成分以及数量(join table属性),这是在我前面的问题中完成的。最后一个问题是,我想将此属性设置为可编辑。您可能需要研究如何将嵌套模型与cocoon gem结合起来。这将允许您拥有一个可以同时更新多个模型的表单,它将为您处理所有ajax。我在一个系统上使用了这个gem,在这个系统中,用户需要能够通过动态表单字段为琐事问题添加一个或多个答案。我认为,如果用户能够为一个菜谱添加一个或多个RecipeCredition关系,那么它也可能对您有用。您可以通过Cocoon动态地将select添加到表单中,Cocoon包含一个带有成分模型记录的select 您可能希望研究如何将嵌套模型与cocoon gem结合起来。这将允许您拥有一个可以同时更新多个模型的表单,它将为您处理所有ajax。我在一个系统上使用了这个gem,在这个系统中,用户需要能够通过动态表单字段为琐事问题添加一个或多个答案。我认为,如果用户能够为一个菜谱添加一个或多个RecipeCredition关系,那么它也可能对您有用。您可以通过Cocoon动态地将select添加到表单中,Cocoon包含一个带有成分模型记录的select 一种解决方案是将其设置为“手动”,为每个配方添加一个输入字段,然后在控制器中读取并设置值。我想有一个
简单的表单和rails
-解决方案,但我们渴望阅读它。是否有任何参考来源?一个解决方案是将其设置为“手动”,为每个配方添加一个输入字段,并在控制器中读取和设置值。我想有一个简单的表单和rails
-解决方案,但我很想阅读它。有什么参考资料吗?我不知道嵌套模型是否能满足我的需要。事实上,我想自己创建配方和配料模型,这已经完成了。用户将看到哪个配方使用了配料#show action中的配料,这也完成了。至于配方#show action,有一点不同,用户将看到它使用的成分以及数量(join table属性),这是在我前面的问题中完成的。最后一个问题是,我想使该属性可编辑。最好的方法是什么?许多人感谢这篇文章,并补充了这一意图。谢谢你的建议。但这些示例似乎都是关于一个嵌套的create表单,用户可以在其中动态添加与属性的关联。与我的意图有点不同。试着用cocoon看看是否可以修改。我不知道嵌套模型是否能满足我的要求。事实上,我想自己创建配方和配料模型,这已经完成了。用户将看到哪个配方使用了配料#show action中的配料,这也完成了。至于配方#show action,有一点不同,用户将看到它使用的成分以及数量(join table属性),这是在我前面的问题中完成的。最后一个问题是,我想使该属性可编辑。最好的方法是什么?许多人感谢这篇文章,并补充了这一意图。谢谢你的建议。但这些示例似乎都是关于一个嵌套的create表单,用户可以在其中动态添加与属性的关联。与我的意图有点不同。尝试使用cocoon,看看是否可以修改。
...
<%= simple_form_for @recipe do |f| %>
<div class="form-group">
<%= f.input :name, input_html: { class: "form-control"} %>
<%= f.input :description, input_html: { class: "form-control"} %>
<%= f.collection_select(:ingredient_ids, Ingredient.all, :id, :title, {}, {multiple: true}) %>
<!-- reserve for recipe_ingredients.amount -->
</div>
<%= f.submit "Submit", disable_with: 'Submitting...', class: "btn btn-primary"%>
<% end %>
...