2015-12-15 6 views
0

Я пытаюсь создать приложение с Rails 4 & devise.Rails 4, Devise & Omniauth - нет ошибки метода

Я пытаюсь следовать этому учебнику:

http://sourcey.com/rails-4-omniauth-using-devise-with-twitter-facebook-and-linkedin/

Когда я выполнить шаги, и запустить сервер, я получаю эту ошибку

NoMethodError (undefined method `update' for nil:NilClass): 
2015-12-14T20:37:03.180526+00:00 app[web.1]: app/controllers/users_controller.rb:43:in `finish_signup' 
2015-12-14T20:37:03.180540+00:00 app[web.1]: 

финишной регистрации метод:

def finish_signup 
    # authorize! :update, @user 
    if request.patch? && params[:user] #&& params[:user][:email] 
     if @user.update(user_params) 
     @user.skip_reconfirmation! 
     sign_in(@user, :bypass => true) 
     redirect_to @user, notice: 'Your profile was successfully updated.' 
     else 
     @show_errors = true 
     end 
    end 
    end 

Конкретная линия, идентифицированная как проблема lem is:

if @user.update(user_params) 

Кто-нибудь видит, что происходит не так? Я не знаю, как прочитать ошибку, чтобы понять, о чем она жалуется. Может ли кто-нибудь увидеть проблему?

+0

Вы не инициализирует переменную @user. –

+0

Привет, мне очень жаль, но не уверен, что вы имеете в виду. Вы имеете в виду, что я должен написать @current_user вместо этого? – Mel

+0

У вас есть 'before_action: set_filter', как в примере? В противном случае нет' @ user' –

ответ

0

Вы получаете ошибку, так как ваш @user is nil.

Что я могу видеть из ваших комментариев это вам необходимо обновить этот

before_action :set_user, only: [:index, :show, :edit, :update, :destroy] 

к этому

before_action :set_user, only: [:index, :show, :edit, :update, :destroy, :finish_signup] 
Смежные вопросы