2014-11-08 54 views
0

訪問PARAMS我試圖訪問參數在我的控制器作爲字符串Ruby on Rails的從控制器從形式

當我登錄

Rails.logger.debug "!!!" << "#{params[:username]}" 

沒有一樣是感嘆號之後,即使

Rails.logger.debug params.inspect 

顯示用戶名有一個值。

有人可以告訴我如何獲得用戶名值顯示在我的日誌調試語句?

控制器代碼:記錄的的信息

def create 
    Rails.logger.debug params.inspect 
    Rails.logger.debug "!!!" << "#{@user[:username]}" 

    @user = Users.new(user_params) 

    {params[:birth_year]}" 
    if @user.save 
     redirect_to(:controller => 'users', :action => 'index') 
    else 
     render(:controller => 'access', :action => 'index') 
    end 
end 

最後幾行:

"user"=>{"username"=>"TrevorTT" ... 

!!! 
+0

顯示你有的控制器代碼。 – 2014-11-08 02:38:47

+0

顯示完整的控制器代碼...並希望你有白名單方法.. – 2014-11-08 02:49:06

+0

顯示'params.inspect'的輸出.. .. – 2014-11-08 02:51:09

回答

0

@user不會在此行中工作Rails.logger.debug "!!!" << "#{@user[:username]}"因爲它尚未創建。在記錄器上方移動 @user = Users.new(user_params)

但根據我的理解,你只是想記錄username PARAMS只。

所以你可以這樣做params[:user][:username]因爲username嵌套在user PARAMS。所以你的代碼應該是:

def create 
    Rails.logger.debug params.inspect 
    Rails.logger.debug "!!!" << "#{params[:user][:username]}" 

    .... 
end 
+0

非常感謝,我實際上使用params [:username]但我沒有'我意識到我需要使用2d數組 – dinosaurW 2014-11-08 16:05:32

0

@user定義之前調用它。它將返回零。

def create 
    #... 
    Rails.logger.debug "!!!" << "#{@user[:username]}" # <-- @user is nil 

    @user = User.new(user_params) 

您可以離開這個線的地方,使用user_params

def create 
    #... 
    Rails.logger.debug "!!!" << "#{user_params[:username]}" 

    @user = User.new(user_params) 

或將低於@user =

def create 
    #...  
    @user = User.new(user_params) 

    Rails.logger.debug "!!!" << "#{@user[:username]}" 

也行,你的型號名稱應該是singluar(如:User )。