2015-11-27 37 views
1

我希望用戶註冊到應用程序,但我得到下面這個錯誤顯示,的ActionController :: ParameterMissing在UsersController#顯示

ActionController::ParameterMissing in UsersController#show 
param is missing or the value is empty: user 

users_controller.rb

def show 
 
    @user = User.new(user_params) 
 
end 
 

 
def new 
 
    @user = User.new 
 
end 
 

 
def create 
 
    @user = User.new(user_params) 
 
    if @user.save 
 
    flash[:success] = "Welcome to the Sample App!" 
 
    redirect_to @user 
 
    else 
 
    render 'new' 
 
    end 
 
end 
 

 
private 
 

 
def user_params 
 
    params.require(:user).permit(:name, :email, :password, :password_confirmation) 
 
end

+0

「UsersController#show」的內容在哪裏? – Emu

+0

我敢打賭,你在'UsersController#show'的某處調用了'user_params'。 – Aetherus

+0

是的,我已經在UsersController#show – maheshkumar

回答

2

當您在show操作中調用user_params方法時,需要user參數將出現在params散列中。但是,對於show操作的相應請求,它並不真正存在。這就是爲什麼說你有提到的錯誤:

param is missing or the value is empty: user 

要解決你的問題,改變你的show方法是:

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

這是剛剛從params哈希抓住用戶的id然後找到該用戶從數據庫中使用User.find調用。

+1

中調用user_params方法感謝Rakibul伊斯蘭教,它的工作。 – maheshkumar

+0

太棒了!很高興幫助:) –

1

這是因爲您在show動作中調用了user_params。正常請求顯示操作只有一個參數是用戶的id。在這裏你調用user_params它會搜索params對應用戶模型的屬性,然後把它們變成新的方法,但它們不存在。因此它會給你帶來錯誤。 我認爲在show action中你只寫: def show @user = User.find params[:id] @new_user = User.new #if you need create 1 form at show view end

相關問題