Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 Rails 3多态性分离“;NoMethodError:未定义的方法`name';对于nil:NilClass:INSERT-in";_Ruby On Rails 3_File Upload_Polymorphic Associations - Fatal编程技术网

Ruby on rails 3 Rails 3多态性分离“;NoMethodError:未定义的方法`name';对于nil:NilClass:INSERT-in";

Ruby on rails 3 Rails 3多态性分离“;NoMethodError:未定义的方法`name';对于nil:NilClass:INSERT-in";,ruby-on-rails-3,file-upload,polymorphic-associations,Ruby On Rails 3,File Upload,Polymorphic Associations,我有两个具有多态关联的模型(希望设置良好)。 当我试图上传一个文件时,我在一个错误中运行,它告诉我类似这样的信息:NoMethodError:nil的未定义方法'name':NilClass:INSERT-INTO“uploads” 我绝对不知道name属性来自何处,以及如果我将file属性留空,模型为什么会保存 class Event < ActiveRecord::Base attr_accessible :title, :uploads_attributes has

我有两个具有多态关联的模型(希望设置良好)。 当我试图上传一个文件时,我在一个错误中运行,它告诉我类似这样的信息:
NoMethodError:nil的未定义方法'name':NilClass:INSERT-INTO“uploads”
我绝对不知道name属性来自何处,以及如果我将file属性留空,模型为什么会保存

class Event < ActiveRecord::Base
  attr_accessible :title,
    :uploads_attributes

  has_many :uploads, :as => :uploadable
  accepts_nested_attributes_for :uploads
end

class Upload < ActiveRecord::Base
  attr_accessible :filename, :path, :title

  belongs_to :uploadable, :polymorphic => true
end
更新:创建操作是普通的脚手架代码

def create                                                                                                                                                 
  @event = Event.new(params[:event])

  respond_to do |format|
    if @event.save
      format.html { redirect_to @event, notice: 'Event was successfully created.' }
      format.json { render json: @event, status: :created, location: @event }
    else
      format.html { render action: "new" }
      format.json { render json: @event.errors, status: :unprocessable_entity }
    end
  end
end
如果我只是在上传表单中插入一个标题,那么一切都会运行良好。但如果我也选择了一个文件,则在保存时会出现此错误

NoMethodError: undefined method `name' for nil:NilClass: INSERT INTO "uploads" ("created_at", "filename", "path", "title", "updated_at", "uploadable_id", "uploadable_type") VALUES (?, ?, ?, ?, ?, ?, ?)
这些参数对我来说很好

{"utf8"=>"✓",
 "authenticity_token"=>"ppPQnkqXPSbNzRU4KGW11EpzktONZC2DS+hkRQAOnlM=",
 "event"=>{"title"=>"Erstes",
 "uploads_attributes"=>{"0"=>{"title"=>"foo",
 "filename"=>#<ActionDispatch::Http::UploadedFile:0x00000003a2d548 @original_filename="Hazard_E.svg",
 @content_type="image/svg+xml",
 @headers="Content-Disposition: form-data; name=\"event[uploads_attributes][0][filename]\"; filename=\"Hazard_E.svg\"\r\nContent-Type: image/svg+xml\r\n",
 @tempfile=#<File:/tmp/RackMultipart20120721-25352-1ioiss9>>}}},
 "commit"=>"Create Event"}
{“utf8”=>“✓",
“真实性令牌”=>“ppPQnkqXPSbNzRU4KGW11EpzktONZC2DS+hkRQAOnlM=”,
“事件”=>{“标题”=>“事件”,
“上载_属性”=>{“0”=>{“title”=>“foo”,
“文件名”=>#}},
“提交”=>“创建事件”}

这是一个Rails 3.2.6应用程序。我创建了一个新应用程序,错误与我的开发项目中的错误相同。

我正在处理一个类似的问题,我认为在保存之前,您可能需要将文件对象替换为params散列中的文件名。params['event']['filename']是ActionDispatch::Http::UploadFile对象,您可能希望该值为字符串。

我正在处理一个类似的问题,我认为您可能需要在保存前将文件对象替换为params哈希中的文件名。params['event']['filename']是ActionDispatch::Http::UploadFile对象,您可能希望该值是一个字符串。

您可以将其放在这里
创建
操作吗?问题已更新,创建操作显示在她的控制器部分。稍等片刻:如果您将其更改为
,这可能是与此类似的问题。”无法批量分配受保护的属性:可上载“即使在我的事件模型中有
attr\u accessible:uploadable
,你能把
create
action放在这里吗?问题更新了,create action显示在她的控制器部分。在黑暗中拍摄一会儿:如果你把它改成
,这可能是一个类似的问题。”“无法批量分配受保护的属性:可上载“即使在我的事件模型中有
attr\u accessible:uploadable
,我也这么认为。但问题是怎么做?我已经解决了。Thanx ttthet;)例如,在创建和更新操作的事件控制器中,我添加了这一行:
@event.process
在事件模型中,然后是我的应用程序中ftp上载的处理操作。这里的出发点是将
事件.filename
替换为
事件.filename.original\u文件名
是的,我也这么认为。但问题是怎么做?我已经解决了。Thanx ttthet;)例如,在创建和更新操作的事件控制器中,我添加了这一行:
@event.process
在事件模型中,然后是我的应用程序中ftp上载的处理操作。跳转点是将
事件.filename
替换为
事件.filename.original\u文件名
NoMethodError: undefined method `name' for nil:NilClass: INSERT INTO "uploads" ("created_at", "filename", "path", "title", "updated_at", "uploadable_id", "uploadable_type") VALUES (?, ?, ?, ?, ?, ?, ?)
{"utf8"=>"✓",
 "authenticity_token"=>"ppPQnkqXPSbNzRU4KGW11EpzktONZC2DS+hkRQAOnlM=",
 "event"=>{"title"=>"Erstes",
 "uploads_attributes"=>{"0"=>{"title"=>"foo",
 "filename"=>#<ActionDispatch::Http::UploadedFile:0x00000003a2d548 @original_filename="Hazard_E.svg",
 @content_type="image/svg+xml",
 @headers="Content-Disposition: form-data; name=\"event[uploads_attributes][0][filename]\"; filename=\"Hazard_E.svg\"\r\nContent-Type: image/svg+xml\r\n",
 @tempfile=#<File:/tmp/RackMultipart20120721-25352-1ioiss9>>}}},
 "commit"=>"Create Event"}