Код контроллера может быть следующим:
def create
@product = Product.new(product_params)
@product.user = current_user
@product.save
end
private
def product_params
params.require(:product).permit(:productname, :productprice, :productstatus, :image, :category_id)
end
Код просмотра будет следующим: В идеале ваш category_id
должен быть params[:product]
. Ваши параметры должны выглядеть как {product: {category_id: 1, other_attr: 'abc'}}
. Вы должны использовать form_for
или form_with
, поэтому используйте свой объект formbuilder.
<%= form_with(model: @product) do |f| %>
<%= f.collection_select :category_id, Category.all, :id, :name, class: 'form-control', id: 'sel1' %>
<% end %>
Я использовал collection_select, вы даже можете использовать другие помощники выбора.
Другой обходной путь может заключаться в использовании атрибута name как product[category_id]
<%= select_tag 'category', options_for_select(Category.pluck(:name, :id)), name: 'product[category_id]', class: 'form-control', id: 'sel1' %>