Ruby on rails 如何在创建操作中调用Select_标记

Ruby on rails 如何在创建操作中调用Select_标记,ruby-on-rails,ruby,ruby-on-rails-3,ruby-on-rails-4,ruby-on-rails-6,Ruby On Rails,Ruby,Ruby On Rails 3,Ruby On Rails 4,Ruby On Rails 6,实际上,我从类别中获取类别模型值以获取输入。。。。。 类别id在产品模型中充当外键 我是这样做的 <%= select_tag 'category', options_for_select(Category.pluck(:name, :id)), class: 'form-control', id: 'sel1' %> def create @product = Product.new(product_params) @product.user = current_user

实际上,我从类别中获取类别模型值以获取输入。。。。。 类别id在产品模型中充当外键 我是这样做的

<%= select_tag 'category', options_for_select(Category.pluck(:name, :id)), class: 'form-control', id: 'sel1' %>
def create
@product = Product.new(product_params)
@product.user = current_user

  private

def product_params
  params.require(:product).permit(:productname, :productprice, :productstatus,:image ,:category )
end
但是,当我创建产品时,出现了一个错误,该类别应该存在。
我认为params[:category]没有通过category_id

两种方法来解决这个问题:

第一:实际配置

def create
  @product = Product.new(product_params)
  @product.user = current_user
  @product.category_id = params[:category]
  @product.save
end

private

def product_params
  params.require(:product).permit(:productname, :productprice, :productstatus, :image)
end
第二:将选择标签重命名为“产品[类别\标识]”

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

控制器代码可能如下所示:

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\u id
应该位于
params[:product]
您的参数应该像
{product:{category\u id:1,other\u attr:'abc'}}

您必须对使用
form\u,或对
使用
form\u,因此请使用formbuilder对象

<%= form_with(model: @product) do |f| %>
  <%= f.collection_select :category_id, Category.all, :id, :name, class: 'form-control', id: 'sel1' %>
<% end %>

谢谢Anan,当我将form builder对象与您给定的select助手一起使用时,它解决了我的问题
<%= select_tag 'category', options_for_select(Category.pluck(:name, :id)), name: 'product[category_id]', class: 'form-control', id: 'sel1' %>