【问题标题】:How to add multiple records in form for a HMABTM relation Rails如何在表单中为 HMABTM 关系 Rails 添加多条记录
【发布时间】:2021-02-15 21:30:49
【问题描述】:

我有一个模型 Landings 和一个模型 Products

有一个has_many_and_belongs_to_many 关联,有一个连接表landings_products

我希望能够从创建和编辑landing 表单中添加各种products

我添加了一个这样的选择,其中包含可选择产品的下拉列表,但我只能为每个着陆选择一个产品,并且我希望能够添加尽可能多的产品:

<%= form_with(model: landing, local: true) do |form| %>
    <%= select_tag("landing[product_ids][]", options_from_collection_for_select(Product.all, :id, :name)) %>
    <%= form.submit "Crear landing page", class: "btn btn-primary"  %>
<% end %>

另外,我已将着陆控制器中的 product_id 列入白名单。

¿如何从同一个表单中为我的模型添加多个产品?

非常感谢

【问题讨论】:

  • 如果您想允许多项选择,您的选择需要选择multiple: true,通常加上一个“大小”,以便显示多个项目。但是,请参阅下面的 obiruby 的回答,因为 collection_check_boxes 几乎可以肯定是更好的 UI 选择。

标签: ruby-on-rails ruby


【解决方案1】:

一种方法是使用#collection_check_boxes

<%= form_with(model: landing, local: true) do |form| %>
    <%= form.collection_check_boxes(:product_ids, Product.all, :id, :name) %>
    <%= form.submit "Crear landing page", class: "btn btn-primary"  %>
<% end %>

【讨论】:

  • 我的参数数量错误(给定 4,预期 5..7),缺少什么参数?也许 :landing 应该是第一位的。非常感谢!
  • 对此感到抱歉 - 我最初忘记将 form 作为复选框方法的接收者。我刚刚相应地更新了答案。
猜你喜欢
  • 1970-01-01
  • 2021-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多