繁体   English   中英

无法使用 select_tag 进行选择

[英]Not able to get pick with select_tag

实际上我从类别中获取我的类别 model 值以进行输入..... category_id 充当产品 Model 中的外键我正在接受这样的输入

<%= select_tag 'category', options_for_select(Category.pluck(:name, :id)), class: 'form-control', id: 'sel1' %>

并在 Product_controller 中传递类别 ID 像这样创建操作

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

第二:将 select 标签重命名为“product[category_id]”

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

Controller 代码可能如下所示:

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_forform_with ,因此请使用您的 formbuilder object。

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

我用过 collection_select 你甚至可以使用其他 select 助手。

另一种解决方法是使用 name 属性作为product[category_id]

<%= select_tag 'category', options_for_select(Category.pluck(:name, :id)), name: 'product[category_id]', class: 'form-control', id: 'sel1' %>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM