Ruby on rails Rails 3:属性没有方法错误

Ruby on rails Rails 3:属性没有方法错误,ruby-on-rails,Ruby On Rails,我收到以下错误消息: NoMethodError in UploadStepsController#update undefined method `attributes=' for #<ActiveRecord::Relation:0x00000104775c40> app/controllers/upload_steps_controller.rb:12:in `update' NoMethodError在UploadStepsController中#更新 未定义的方法“

我收到以下错误消息:

NoMethodError in UploadStepsController#update

undefined method `attributes=' for #<ActiveRecord::Relation:0x00000104775c40>


app/controllers/upload_steps_controller.rb:12:in `update'
NoMethodError在UploadStepsController中#更新
未定义的方法“attributes=”用于#
app/controllers/upload\u steps\u controller.rb:12:in'update'
我目前正在构建一个允许用户上传文件的向导,使用邪恶向导gem。我错过了什么

上传\u步骤\u控制器.rb

class UploadStepsController < ApplicationController
include Wicked::Wizard
steps :audience, :rewards, :review

def show
    @upload = current_user.uploads
    render_wizard
end

def update
    @upload = current_user.uploads
    @upload.attributes = params[:upload]
    render_wizard @upload
end


end
class Upload < ActiveRecord::Base
attr_accessible :title, :tagline, :category, :genre, :length, :description

belongs_to :user

validates :title, presence: true
validates :tagline, presence: true
validates :category, presence: true
validates :genre, presence: true
validates :length, presence: true
validates :description, presence: true
validates :user_id, presence: true

default_scope order: 'uploads.created_at DESC'
end
class UploadStepsController
upload.rb

class UploadStepsController < ApplicationController
include Wicked::Wizard
steps :audience, :rewards, :review

def show
    @upload = current_user.uploads
    render_wizard
end

def update
    @upload = current_user.uploads
    @upload.attributes = params[:upload]
    render_wizard @upload
end


end
class Upload < ActiveRecord::Base
attr_accessible :title, :tagline, :category, :genre, :length, :description

belongs_to :user

validates :title, presence: true
validates :tagline, presence: true
validates :category, presence: true
validates :genre, presence: true
validates :length, presence: true
validates :description, presence: true
validates :user_id, presence: true

default_scope order: 'uploads.created_at DESC'
end
类上传
新错误

NoMethodError in UploadStepsController#update
undefined method `save' for #<ActiveRecord::Relation:0x0000010159c098>

app/controllers/upload_steps_controller.rb:13:in `update'
NoMethodError在UploadStepsController中#更新
未定义的方法“保存”#
app/controllers/upload\u steps\u controller.rb:13:in'update'
试试这个:

@upload.update_attributes(params[:upload])

当前_user.uploads是AREL对象。因此,您必须指定要更新的上载内容。例如,第一个用户上传

current_user.uploads.first.update_attributes(params[:upload])
或许

@upload = current_user.uploads.find(params[:upload].delete(:id))
@upload.update_attributes(params[:upload])
还是所有记录

@upload = current_user.uploads
@upload.update_all(params[:upload])

@upload=current_user.uploads,它为您提供uploads对象的数组,但属性方法适用于单个对象。所以你必须应用每种方法

@uploads = current_user.uploads
@uploads.each do | upload|
  upload.update_attributes(params[:upload])
end

上传看起来像是复数?属性是针对单个记录的。它是复数,因为一个用户可以有多个上传。有什么办法可以解决这个问题吗?在我粘贴这个之前,属性出现了错误:@upload=current_user.uploads(params[:upload])@upload.update_all(params[:upload])……现在我得到了一个无方法错误,未定义的方法“save”……我假设这与邪恶的向导gem有关。有什么建议吗?上传活动记录模型?hm arel对象…这意味着你在当前用户上使用更新属性。上传…你必须先使用或查找…或更新。我需要更清楚地解释这一点。我需要做的是允许登录用户上传一个文件,并填写与该文件相关的几个属性。我用一个巫师来处理邪恶的巫师宝石。我一直在关注这段视频以实现以下目标:。我在视频中看到了6点16分,这是我目前的问题。这是否使我需要做的事情变得更清楚?让我知道你的想法,我真的很感谢你的帮助!