Rails错误发送字符串而不是对象

时间:2014-07-12 01:25:46

标签: ruby-on-rails ruby ruby-on-rails-4

尝试使用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!"}

1 个答案:

答案 0 :(得分:0)

试试这个:

 <%= f.collection_select :category_id, Category.all, :id, :name %>

顺便提一下,您的Products模型和表格中实际上是否有category_id整数字段?如果你没有,那么它会抛出你提到的错误。您需要使用迁移添加它。