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

问题描述 投票:0回答:1

我正在使用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,但在这种情况下我觉得不合适。

有人执行过这样的事情吗?

ruby-on-rails ruby-on-rails-5 simple-form
1个回答
0
投票
  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
    
© www.soinside.com 2019 - 2024. All rights reserved.