我正在使用一种has_many through:
关系通过blogs
将subcategories
分类为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
,但在这种情况下我觉得不合适。
有人实施过这样的东西吗?
答案 0 :(得分:0)
使用简单表单的表单帮助器创建选择。输入的ID很重要。应该是subcategory_ids
<%= f.input :subcategory_ids, collection: Subcategory.all,
input_html: { multiple: true } %>
允许BlogsController
中的subcategory_ids参数。将subcategory_ids(数组)添加为allow方法的最后一个参数。
def blog_params
params.require(:blog).permit(:foo, :boo, subcategory_ids: [])
end