0

users_controller ファイルを変更していませんが、ユーザー プロファイルを更新した後、「引数の数が間違っています (2 対 1)」というエラーが表示されます。「app/controllers/users_controller.rb:41:in `update'」を指しています。

私のコードは正しいように見えますが、何か不足している必要があります。何か案は?

ユーザーコントローラー:

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
4

1 に答える 1

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)

欠落する前は、「。has」の部分がありませんでした。

于 2013-03-18T13:55:26.420 に答える