2014-11-08 55 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 )。