2014-11-08 3 views
0

Я пытаюсь доступа к параметрам в мой контроллер в виде строкРубин на Rails Доступ к Params из контроллера от формы

Когда я вхожу

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

ничего не приходит после того, как восклицательные знаки, даже если

Rails.logger.debug params.inspect 

показывает, что имя пользователя имеет значение.

Может кто-нибудь рассказать мне, как получить значение имени пользователя в моем отладке журнала?

Controller Код:

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

Показать полный код контроллера ... и надеемся, что у вас есть метод с белым листингом. –

+0

показать результат 'params.inspect'. –

ответ

0

@user не работает в этой строке Rails.logger.debug "!!!" << "#{@user[:username]}", потому что он еще не создан. Либо переместите @user = Users.new(user_params) над регистратором.

Но, как я понимаю, вы просто хотите зарегистрировать только параметры username.

Итак, вы можете сделать это так: params[:user][:username], потому что username вложен под user params. Таким образом, ваш код должен быть:

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

    .... 
end 
+0

Спасибо, тонна, я фактически использовал params [: username], но я didn ' я понял, что мне нужно использовать 2d-массив – dinosaurW

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).

Смежные вопросы