尝试使用select字段在我的Rails应用中解决此问题。我的应用程序有一个类别模型,其中包含很多产品。我尝试提交表单,以便为每个产品实例添加一个类别,但我收到的错误如下所示:"类别(#70274155683560)预期,得到字符串(# 70274305215280)" 。这是我的表格选择:
<%= f.select :category, Category.all.collect {|c| [c.name, c.id ]}, :prompt => "Select One" %>
此类别.rb:
class Category < ActiveRecord::Base
has_many :products, :foreign_key => 'category_id'
end
以下是Product.rb中的代码:
belongs_to :category, :foreign_key => 'category_id'
validates :category, presence: true
最后,重要的products_Controller代码:
def product_params
params.require(:product).permit(:name, :decimal_price, :description, :photo, :destroy_photo, :category)
end
def create
@product = Product.new(product_params)
@product.set_user!(current_user)
respond_to do |format|
if @product.save
flash.now[:notice] = "Your item is for sale!"
format.html {render :action => "show"}
else
flash.now[:alert] = "Woops, looks like something went wrong."
format.html{render :action => "create"}
end
end
end
有什么想法吗?
编辑 这是我尝试提交表单时params哈希的样子:
{"utf8"=>"✓",
"authenticity_token"=>"tdJX1tU8M91N2IBzHFBGMc4/RhREs2RSnKQc4plGyjs=",
"product"=>{"name"=>"dsfsd",
"decimal_price"=>"3.5",
"description"=>"fdsfsddfs",
"category"=>"2"},
"commit"=>"List!"}
答案 0 :(得分:0)
试试这个:
<%= f.collection_select :category_id, Category.all, :id, :name %>
顺便提一下,您的Products模型和表格中实际上是否有category_id
整数字段?如果你没有,那么它会抛出你提到的错误。您需要使用迁移添加它。