Rails 5:通过多项选择创建多个联接表项

我正在使用一种has_many through:关系通过blogssubcategories分类为blog_categorizations

我已经正确设置了所有模型:

class Blog < ApplicationRecord
  has_many :blog_categorizations
  has_many :subcategories,through: :blog_categorizations
end

class Subcategory < ApplicationRecord
  has_many :blog_categorizations
  has_many :blogs,through: :blog_categorizations
end

class BlogCategorization < ApplicationRecord
  belongs_to :blog
  belongs_to :subcategory
end

但是现在我很难在我的blogs/_form中进行设置。我有以下多项选择:

<select class="mdb-select colorful-select dropdown-primary md-form" multiple searchable="Search here...">
  <%= Subcategory.all.each do |sub| %>
    <option value="<%= sub.id %>"><%= sub.name %></option>
  <% end %>
</select>
<label class="mdb-main-label">Subcategories</label>

可以正确显示可能的子类别的列表,但是现在我不知道如何为所选的每个子类别创建新的blog_categorization。我想使用hidden_field,但在这种情况下我觉得不合适。

有人实施过这样的东西吗?

liuliuliu01 回答:Rails 5:通过多项选择创建多个联接表项

  1. 使用简单表单的表单帮助器创建选择。输入的ID很重要。应该是subcategory_ids

    <%= f.input :subcategory_ids,collection: Subcategory.all,input_html: { multiple: true } %>
    
  2. 允许BlogsController中的subcategory_ids参数。将subcategory_ids(数组)添加为allow方法的最后一个参数。

    def blog_params
      params.require(:blog).permit(:foo,:boo,subcategory_ids: [])
    end
    
本文链接:https://www.f2er.com/3141718.html

大家都在问