我试图在控制器中以字符串
的形式访问参数当我记录
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 :(得分: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]}"
此外,您的模型名称应该是单一的(例如。User
)。
答案 1 :(得分:0)
@user无法在此行Rails.logger.debug "!!!" << "#{@user[:username]}"
中使用,因为它尚未创建。要么搬家
记录器上方@user = Users.new(user_params)
。
但根据我的理解,您只想记录username
参数。
所以你可以这样做params[:user][:username]
,因为username
嵌套在user
参数下。所以你的代码应该是:
def create
Rails.logger.debug params.inspect
Rails.logger.debug "!!!" << "#{params[:user][:username]}"
....
end