UsersController#update中的ArgumentError

时间:2013-03-15 15:37:01

标签: ruby-on-rails

我没有更改我的users_controller文件,但现在我在更新用户配置文件“错误的参数数量(2 for 1)”后收到此错误。它指向“app / controllers / users_controller.rb:41:in”update“”。

我的代码看起来是正确的,但我必须遗漏一些东西。有什么想法吗?

users_controller:

class UsersController < ApplicationController

  def new
    @user = User.new
  end

  def profile
    @profile = User.profile
  end

  def create
    @user = User.new(params[:user])
    if @user.save
      UserMailer.registration_confirmation(@user).deliver
      session[:user_id] = @user.id
      redirect_to root_url, notice: "Thank you for signing up!"
    else
      render "new"
    end
  end

  def show
    @user = User.find(params[:id])
  end

    def edit
      @user = User.find(params[:id])
end

  def index
    @users = User.all
  end

  def destroy
     User.find(params[:id]).destroy
     flash[:success] = "User deleted."
     redirect_to users_url
   end

def update
    @user = if current_user.role?(:admin)
       User.find(params[:id])
     else
       current_user
     end
    if @user.update_attributes(params[:user])
      flash[:success] = "Account updated"
      redirect_to @user
    else
      render 'edit'
    end
end
end

1 个答案:

答案 0 :(得分:1)

我找到了解决我遇到麻烦的问题。

在user.rb中我必须添加:

  def has_role?(role_name)
    role.present? && role.to_sym == role_name.to_sym
  end

然后在我刚刚添加的控制器中:

 @user = if current_user.has_role?(:admin)

在错过“之前。已经部分了。