Ruby on rails 如何在创建操作中调用Select_标记
实际上,我从类别中获取类别模型值以获取输入。。。。。 类别id在产品模型中充当外键 我是这样做的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
<%= 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' %>