Ruby on rails Rails多态嵌套属性,字段为\u,无法保存

Ruby on rails Rails多态嵌套属性,字段为\u,无法保存,ruby-on-rails,ruby,forms,polymorphic-associations,model-associations,Ruby On Rails,Ruby,Forms,Polymorphic Associations,Model Associations,我有以下代码: class User < ActiveRecord::Base has_one :profile_image, :as => :owner, :class_name => 'Image' has_one :cover_image, :as => :owner, :class_name => 'Image' end 但是,这将编译为以下参数哈希: [2] pry(#<PagesController>)> params[:

我有以下代码:

class User < ActiveRecord::Base
  has_one :profile_image, :as => :owner, :class_name => 'Image'
  has_one :cover_image,   :as => :owner, :class_name => 'Image'
end
但是,这将编译为以下参数哈希:

[2] pry(#<PagesController>)> params[:user]
=> {"email"=>"kasper@example.com",
 "profile_image"=>
  {"file"=>
    #<ActionDispatch::Http::UploadedFile:0x007f8a41365d30
     @content_type="image/png",
     @headers=
      "Content-Disposition: form-data; name=\"user[profile_image][file]\"; filename=\"Screenshot 2014-04-27 02.57.34.png\"\r\nContent-Type: image/png\r\n",
     @original_filename="Screenshot 2014-04-27 02.57.34.png",
     @tempfile=
      #<File:/var/folders/_2/rgn574910638hqstf85233hh0000gn/T/RackMultipart20140518-88429-15129ld>>},
 "cover_image"=>
  {"file"=>
    #<ActionDispatch::Http::UploadedFile:0x007f8a413653d0
     @content_type="image/png",
     @headers=
      "Content-Disposition: form-data; name=\"user[cover_image][file]\"; filename=\"Screenshot 2014-04-27 02.57.34.png\"\r\nContent-Type: image/png\r\n",
     @original_filename="Screenshot 2014-04-27 02.57.34.png",
     @tempfile=
      #<File:/var/folders/_2/rgn574910638hqstf85233hh0000gn/T/RackMultipart20140518-88429-1oosnc5>>}}
如何让它接受我的
配置文件\u图像的属性?

您需要添加:

accepts_nested_attributes_for :profile_image
accepts_nested_attributes_for :cover_image
您得到的错误是rails分配属性方式的结果。对于每个键,它调用
{key}=
方法,因此在您的例子中,它尝试将哈希分配给
profile\u image

当您为
添加
接受\u嵌套的\u属性\u时,许多事情都会改变。首先,它将定义
profile\u image\u attributes=
方法,该方法期望使用散列对象来构建或更新关联对象。当
fields\u注意到定义了此方法时,它将更新字段的名称,以在末尾包含
\u属性
,因此一切都将正常工作

但是请注意,如果没有关联的对象,则不会生成的字段,因此您需要在新建和编辑操作中生成这些对象。

您需要添加:

accepts_nested_attributes_for :profile_image
accepts_nested_attributes_for :cover_image
您得到的错误是rails分配属性方式的结果。对于每个键,它调用
{key}=
方法,因此在您的例子中,它尝试将哈希分配给
profile\u image

当您为
添加
接受\u嵌套的\u属性\u时,许多事情都会改变。首先,它将定义
profile\u image\u attributes=
方法,该方法期望使用散列对象来构建或更新关联对象。当
fields\u注意到定义了此方法时,它将更新字段的名称,以在末尾包含
\u属性
,因此一切都将正常工作

但是请注意,如果没有关联的对象,则不会生成的字段,因此您需要在新建和编辑操作中生成这些对象。

您需要添加:

accepts_nested_attributes_for :profile_image
accepts_nested_attributes_for :cover_image
您得到的错误是rails分配属性方式的结果。对于每个键,它调用
{key}=
方法,因此在您的例子中,它尝试将哈希分配给
profile\u image

当您为
添加
接受\u嵌套的\u属性\u时,许多事情都会改变。首先,它将定义
profile\u image\u attributes=
方法,该方法期望使用散列对象来构建或更新关联对象。当
fields\u注意到定义了此方法时,它将更新字段的名称,以在末尾包含
\u属性
,因此一切都将正常工作

但是请注意,如果没有关联的对象,则不会生成的字段,因此您需要在新建和编辑操作中生成这些对象。

您需要添加:

accepts_nested_attributes_for :profile_image
accepts_nested_attributes_for :cover_image
您得到的错误是rails分配属性方式的结果。对于每个键,它调用
{key}=
方法,因此在您的例子中,它尝试将哈希分配给
profile\u image

当您为
添加
接受\u嵌套的\u属性\u时,许多事情都会改变。首先,它将定义
profile\u image\u attributes=
方法,该方法期望使用散列对象来构建或更新关联对象。当
fields\u注意到定义了此方法时,它将更新字段的名称,以在末尾包含
\u属性
,因此一切都将正常工作


但是请注意,如果没有关联的对象,则不会生成,因此,您需要在新建和编辑操作中生成这些对象。

删除
:class\u name=>“Image”
可以解决我猜的问题。请发布
控制器代码。删除
:class\u name=>“Image”
可以解决我猜的问题。请发布
控制器代码。删除
:class\u name=>'Image'
可以解决我猜的问题。请发布
控制器代码。删除
:class\u name=>'Image'
可以解决我猜的问题。请发布
控制器代码。LOL:D为什么我以前没有看到它。LOL:D为什么我以前没有看到它。LOL:D为什么我以前没有看到它我以前没见过吗。