2012-08-06 2 views
1

비밀번호가 재설정 될 때까지 모든 기기가 작동하고 있다고 생각합니다. 아래 오류가 발생합니다. Devise는 layout/email이라는 템플릿을 찾을 수 없습니다. 왜 그걸 원하니? 양식 게시 후 개발자가 사용자 로그인 페이지로 리디렉션한다는 인상하에있었습니다.비밀번호를 재설정 할 때 기기가 깨지는 경우

"reset_password_instructions.html.haml"파일은 리셋 토큰을 분명히 생성 할 수 있기 때문에 문제가 발생한 것으로 의심되지만 이메일은 실제로 전송되지 않습니다. 아래의 오류 메시지를 기반으로 정확한 진단과 같은 소리가 나나요?

이 문제를 해결하려면 무엇을해야합니까? 나는 컨트롤러를 덮어 씀으로써 수정해야한다고 생각하지만 확실하지 않다. 어떤 제안?

Started POST "https://stackoverflow.com/users/password" for 127.0.0.1 at 2012-08-06 05:52:42 -0500 
    Processing by Devise::PasswordsController#create as HTML 
     Parameters: {"utf8"=>"✓", "authenticity_token"=>"kGvuZiu+iu1HAx9xf4RsISj2SM410uLRoR6RbiJcBQw=", "user"=>{"email"=>"[email protected]"}, "commit"=>"Send me reset password instructions"} 
     User Load (6.0ms) SELECT "users".* FROM "users" WHERE "users"."email" = '[email protected]' LIMIT 1 
     User Load (1.3ms) SELECT "users".* FROM "users" WHERE "users"."reset_password_token" = '5QZVFAsq2ev22gpQfe9i' LIMIT 1 
     (0.1ms) BEGIN 
     (3.0ms) UPDATE "users" SET "reset_password_token" = '5QZVFAsq2ev22gpQfe9i', "reset_password_sent_at" = '2012-08-06 10:52:42.591763', "updated_at" = '2012-08-06 10:52:42.593474' WHERE "users"."id" = 2 
     (0.5ms) COMMIT 
    DEPRECATION WARNING: Passing a template handler in the template name is deprecated. You can simply remove the handler name or pass render :handlers => [:haml] instead. (called from call at /Users/bendowney/.rvm/gems/[email protected]/gems/sass-3.1.19/lib/sass/plugin/rack.rb:54) 
    DEPRECATION WARNING: Passing a template handler in the template name is deprecated. You can simply remove the handler name or pass render :handlers => [:haml] instead. (called from call at /Users/bendowney/.rvm/gems/[email protected]/gems/sass-3.1.19/lib/sass/plugin/rack.rb:54) 
    Completed 500 Internal Server Error in 113ms 

    ActionView::MissingTemplate (Missing template layouts/email with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :coffee, :haml]}. Searched in: 
     * "/Users/bendowney/Sites/RobotimusApp/app/views" 
     * "/Users/bendowney/.rvm/gems/[email protected]/gems/devise-2.1.2/app/views" 
    ): 
     actionpack (3.2.5) lib/action_view/path_set.rb:58:in `find' 
     actionpack (3.2.5) lib/action_view/lookup_context.rb:109:in `find' 
     actionpack (3.2.5) lib/action_view/renderer/abstract_renderer.rb:3:in `find_template' 
     actionpack (3.2.5) lib/action_view/renderer/template_renderer.rb:79:in `resolve_layout' 
     actionpack (3.2.5) lib/action_view/renderer/template_renderer.rb:86:in `resolve_layout' 
     actionpack (3.2.5) lib/action_view/renderer/template_renderer.rb:69:in `block in find_layout' 
     actionpack (3.2.5) lib/action_view/lookup_context.rb:228:in `with_layout_format' 
#...etc 

답변

2

Devise는 사용자를 리디렉션하기 전에 재설정 토큰을 사용하여 이메일을 보냅니다. 전자 메일을 보내려면 템플릿과 레이아웃이 필요합니다. 귀하의 경우에는 코드의 어딘가에 ActionMailer 클래스에 layout 'email'을 지정했지만 실제로이 레이아웃 템플릿을 만들지 않았기 때문에이 단계가 실패합니다. 최소한이 들어있는 파일 app/views/layouts/email.html.haml을 추가

시도 :

= yield 

(AN .html.erb 템플릿 또는 <%= yield %>).

+0

고마워요! 그게 내 문제를 해결해 줬어. (어떤 이유로 든 실제로 빈 파일을 가질 수는 없지만, 마치 layout/application.html과 같은 전자 메일처럼 약간 채울 필요가있었습니다.) –

+0

물론, 저것은 나가 - 나의 대답을 그러므로 편집했다. – Thilo

관련 문제