2010-11-11 1 views
0

Я успешно использую Authlogic, и я пытаюсь добавить пользователей для сброса их пароля на using this tutorial. Когда я отправить запрос (в PasswordResetsController # создать действие) для сброса пароля я получаю эту ошибку:Authlogic Password_Reset TypeError (не может преобразовать nil в String)

TypeError (can't convert nil into String): 
    app/models/user.rb:19:in `deliver_password_reset_instructions!' 
    app/controllers/password_resets_controller.rb:12:in `create' 

Я через учебник несколько раз, а также прочешут в sample app of it here. Я не могу понять, что происходит. У кого-нибудь есть опыт/направление на эту реализацию и ошибку?

Вот полный выходной разъем:

Processing PasswordResetsController#create (for 127.0.0.1 at 2010-11-11 11:32:19) [POST] 
    Parameters: {"commit"=>"Reset my password", "authenticity_token"=>"G2dtgfJJktJN7iX1FWPHvG5wjLKkIXEIZvJ72+zfSIk=", "email"=>"[email protected]"} 
    User Load (0.4ms) SELECT * FROM "users" WHERE ("users"."email" = '[email protected]') LIMIT 1 
    User Update (0.3ms) UPDATE "users" SET "updated_at" = '2010-11-11 17:32:19', "perishable_token" = 'uu_LhCF77GCNbzYfHb2v' WHERE "id" = 1 

TypeError (can't convert nil into String): 
    app/models/user.rb:19:in `deliver_password_reset_instructions!' 
    app/controllers/password_resets_controller.rb:12:in `create' 

Rendered rescues/_trace (129.1ms) 
Rendered rescues/_request_and_response (0.3ms) 
Rendering rescues/layout (internal_server_error) 

User.rb

def deliver_password_reset_instructions! 
     reset_perishable_token! 
     Notifier.deliver_password_reset_instructions(self) 
    end 

Update: Я использую рельсы 2.3.8 и 1.8.7 рубин

Обновление: Notifier.rb

default_url_options[:host] = "foobar.com" 

def password_reset_instructions(user) 
    subject  "Password Reset Instructions" 
    from   "foobar" 
    recipients user.email 
    sent_on  Time.now 
    body   :edit_password_reset_url => edit_password_reset_url(user.perishable_token) 
end 

Update: Вот /views/notifier/password_rest_instruction.erb

A request to reset your password has been made. If you did not make this request, simply ignore this email. If you did make this request just click the link below: 

<%= @edit_password_reset_url %> 

If the above URL does not work try copying and pasting it into your browser. If you continue to have problem please feel free to contact us. 
+0

Возможно, проблема в шаблоне? Вы ссылаетесь на переменные экземпляра с нулевыми значениями? – zetetic

+0

Я так не думаю. Я думаю, что он не имеет доступа к скоропортящемуся персонажу правильно. – bgadoci

ответ

0

Выход говорит вам, что есть ошибка в строке 19 Пользователь # deliver_password_reset_instructions! Вставьте свой код, и я буду в состоянии помочь вам больше ...

+0

только что добавил, что блок – bgadoci

+0

не знаю ... Я бы попытался прокомментировать какой-то код. Сначала «reset_perishable_token!», Второй «Notifier.deliver_password_reset_instructions (self)», третий удаляет URL-адреса из электронной почты и т. Д. ... – jordinl

+0

Я чувствую, что, возможно, он не загружает perishable_token правильно, поскольку следующая строка после reset_perishable_token тот, кто жалуется, что не может преобразовать nil в строку. Я пробовал комментировать все, и id не исправил это. – bgadoci