Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 4 Rails 4-更新连接表属性,通过_Ruby On Rails 4_Has Many Through_Jointable - Fatal编程技术网

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)。但是我没有完成编辑和更新联接表属性的工作。我有两个想法:

  • 创建另一个编辑页面以编辑联接模型属性
  • 阿贾克斯?但不太熟悉
  • 我知道这个问题似乎微不足道,但许多解决方案已经过时(Rails 3)。迫切需要Rails 4解决方案

    编辑


    意图:我想自己创建配方和配料模型,这已经完成了。用户将看到哪个配方使用了配料#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 %>
    ...