2012-06-23 13 views
0

나는 gravits를 사용하여 gravise를 포함하는 간단한 프로필 탭을 만들려고하지만, 나는 계속 undefined method 'nil : nilClass` cant'이메일을 보내고 있습니다.Gravatar 문제 레일 및 Devise

tab_check.html.erb

<div class="tabbable"> <!-- Only required for left/right tabs --> 
    <ul class="nav nav-tabs"> 
    <li class="active"><a href="#tab1" data-toggle="tab">Dashboard</a></li> 
    <li><a href="#tab2" data-toggle="tab">Inbox</a></li> 
    <li><a href="#tab3" data-toggle="tab">Three</a></li> 
    <li><a href="#tab4" data-toggle="tab">Four</a></li> 
    <li><a href="#tab5" data-toggle="tab">Profile</a></li> 

    <li><a href="#tab6" data-toggle="tab">Account</a></li> 
    </ul> 
    <div class="tab-content"> 
    <div class="tab-pane active" id="tab1"> 
     <p>This will be the Dashboard</p> 
    </div> 
    <div class="tab-pane" id="tab2"> 
     <p>This will be the Inbox</p> 
    </div> 
    <div class="tab-pane" id="tab3"> 
     <p>This will be tab 3</p> 
    </div> 
    <div class="tab-pane" id="tab4"> 
     <p>This will be tab 4/p> 
    </div> 
    <div class="tab-pane" id="tab5"> 
     <%= render 'users/show' %> 
    </div> 
    <div class="tab-pane" id="tab6"> 
     <p>Account settings sections email etc</p> 
    </div> 
    </div> 
</div> 

users_controller.rb

class UsersController < ApplicationController 

    def index 
    @users = User.all 
    end 

    def show 
    @user = User.find(params[:id]) 
    end 
end 

user.rb

class User < ActiveRecord::Base 
    # Include default devise modules. Others available are: 
    # :token_authenticatable, :confirmable, 
    # :lockable, :timeoutable and :omniauthable 
    devise :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable 

    # Setup accessible (or protected) attributes for your model 
    attr_accessible :email, :password, :password_confirmation, :remember_me, 
           :first_name, :last_name 
    # attr_accessible :title, :body 

    has_many :items 
end 

users_helper.rb

module UsersHelper 
    def gravatar_for(user, options = { size: 50}) 
    gravatar_id = Digest::MD5::hexdigest(user.email.downcase) 
    size = options[:size] 
    gravatar_url = "http://gravatar.com/avatar/#{gravatar_id}.png?s=#{size}" 
    image_tag(gravatar_url, alt: user.name, class: "gravatar") 
    end 
end 

마지막으로 _show.heml.erb

<div class="row"> 
    <aside class="span4"> 
    <section> 
     <h1> 
     <%= gravatar_for @user %> 
     <%= @user.first_name %> 
     </h1> 
    </section> 
    </aside> 
</div> 

편집 : 전체 스택 추적 : 모든 포인터가 대단히 감사

app/helpers/users_helper.rb:3:in `gravatar_for' 
app/views/users/_show.html.erb:5:in `_app_views_users__show_html_erb__248270508__620770878' 
actionpack (3.2.3) lib/action_view/template.rb:143:in `block in render' 
activesupport (3.2.3) lib/active_support/notifications.rb:125:in `instrument' 
actionpack (3.2.3) lib/action_view/template.rb:141:in `render' 
actionpack (3.2.3) lib/action_view/renderer/partial_renderer.rb:265:in `render_partial' 
actionpack (3.2.3) lib/action_view/renderer/partial_renderer.rb:238:in `block in render' 
actionpack (3.2.3) lib/action_view/renderer/abstract_renderer.rb:38:in `block in instrument' 
activesupport (3.2.3) lib/active_support/notifications.rb:123:in `block in instrument' 
activesupport (3.2.3) lib/active_support/notifications/instrumenter.rb:20:in `instrument' 
activesupport (3.2.3) lib/active_support/notifications.rb:123:in `instrument' 
actionpack (3.2.3) lib/action_view/renderer/abstract_renderer.rb:38:in `instrument' 
actionpack (3.2.3) lib/action_view/renderer/partial_renderer.rb:237:in `render' 
actionpack (3.2.3) lib/action_view/renderer/renderer.rb:41:in `render_partial' 
actionpack (3.2.3) lib/action_view/helpers/rendering_helper.rb:27:in `render' 
app/views/static_pages/tab_check.html.erb:25:in `_app_views_static_pages_tab_check_html_erb___410072822_92462190' 
actionpack (3.2.3) lib/action_view/template.rb:143:in `block in render' 
activesupport (3.2.3) lib/active_support/notifications.rb:125:in `instrument' 
actionpack (3.2.3) lib/action_view/template.rb:141:in `render' 
actionpack (3.2.3) lib/action_view/renderer/template_renderer.rb:47:in `block (2 levels) in render_template' 
actionpack (3.2.3) lib/action_view/renderer/abstract_renderer.rb:38:in `block in instrument' 
activesupport (3.2.3) lib/active_support/notifications.rb:123:in `block in instrument' 
activesupport (3.2.3) lib/active_support/notifications/instrumenter.rb:20:in `instrument' 
activesupport (3.2.3) lib/active_support/notifications.rb:123:in `instrument' 
actionpack (3.2.3) lib/action_view/renderer/abstract_renderer.rb:38:in `instrument' 
actionpack (3.2.3) lib/action_view/renderer/template_renderer.rb:46:in `block in render_template' 
actionpack (3.2.3) lib/action_view/renderer/template_renderer.rb:54:in `render_with_layout' 
actionpack (3.2.3) lib/action_view/renderer/template_renderer.rb:45:in `render_template' 
actionpack (3.2.3) lib/action_view/renderer/template_renderer.rb:18:in `render' 
actionpack (3.2.3) lib/action_view/renderer/renderer.rb:36:in `render_template' 
actionpack (3.2.3) lib/action_view/renderer/renderer.rb:17:in `render' 
actionpack (3.2.3) lib/abstract_controller/rendering.rb:110:in `_render_template' 
actionpack (3.2.3) lib/action_controller/metal/streaming.rb:225:in `_render_template' 
actionpack (3.2.3) lib/abstract_controller/rendering.rb:103:in `render_to_body' 
actionpack (3.2.3) lib/action_controller/metal/renderers.rb:28:in `render_to_body' 
actionpack (3.2.3) lib/action_controller/metal/compatibility.rb:50:in `render_to_body' 
actionpack (3.2.3) lib/abstract_controller/rendering.rb:88:in `render' 
actionpack (3.2.3) lib/action_controller/metal/rendering.rb:16:in `render' 
actionpack (3.2.3) lib/action_controller/metal/instrumentation.rb:40:in `block (2 levels) in render' 
activesupport (3.2.3) lib/active_support/core_ext/benchmark.rb:5:in `block in ms' 
/home/toaksie/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/benchmark.rb:295:in `realtime' 
activesupport (3.2.3) lib/active_support/core_ext/benchmark.rb:5:in `ms' 
actionpack (3.2.3) lib/action_controller/metal/instrumentation.rb:40:in `block in render' 
actionpack (3.2.3) lib/action_controller/metal/instrumentation.rb:83:in `cleanup_view_runtime' 
activerecord (3.2.3) lib/active_record/railties/controller_runtime.rb:24:in `cleanup_view_runtime' 
actionpack (3.2.3) lib/action_controller/metal/instrumentation.rb:39:in `render' 
actionpack (3.2.3) lib/action_controller/metal/implicit_render.rb:10:in `default_render' 
actionpack (3.2.3) lib/action_controller/metal/implicit_render.rb:4:in `send_action' 
actionpack (3.2.3) lib/abstract_controller/base.rb:167:in `process_action' 
actionpack (3.2.3) lib/action_controller/metal/rendering.rb:10:in `process_action' 
actionpack (3.2.3) lib/abstract_controller/callbacks.rb:18:in `block in process_action' 
activesupport (3.2.3) lib/active_support/callbacks.rb:414:in `_run__447462369__process_action__180978766__callbacks' 
activesupport (3.2.3) lib/active_support/callbacks.rb:405:in `__run_callback' 
activesupport (3.2.3) lib/active_support/callbacks.rb:385:in `_run_process_action_callbacks' 
activesupport (3.2.3) lib/active_support/callbacks.rb:81:in `run_callbacks' 
actionpack (3.2.3) lib/abstract_controller/callbacks.rb:17:in `process_action' 
actionpack (3.2.3) lib/action_controller/metal/rescue.rb:29:in `process_action' 
actionpack (3.2.3) lib/action_controller/metal/instrumentation.rb:30:in `block in process_action' 
activesupport (3.2.3) lib/active_support/notifications.rb:123:in `block in instrument' 
activesupport (3.2.3) lib/active_support/notifications/instrumenter.rb:20:in `instrument' 
activesupport (3.2.3) lib/active_support/notifications.rb:123:in `instrument' 
actionpack (3.2.3) lib/action_controller/metal/instrumentation.rb:29:in `process_action' 
actionpack (3.2.3) lib/action_controller/metal/params_wrapper.rb:205:in `process_action' 
activerecord (3.2.3) lib/active_record/railties/controller_runtime.rb:18:in `process_action' 
actionpack (3.2.3) lib/abstract_controller/base.rb:121:in `process' 
actionpack (3.2.3) lib/abstract_controller/rendering.rb:45:in `process' 
actionpack (3.2.3) lib/action_controller/metal.rb:203:in `dispatch' 
actionpack (3.2.3) lib/action_controller/metal/rack_delegation.rb:14:in `dispatch' 
actionpack (3.2.3) lib/action_controller/metal.rb:246:in `block in action' 
actionpack (3.2.3) lib/action_dispatch/routing/route_set.rb:73:in `call' 
actionpack (3.2.3) lib/action_dispatch/routing/route_set.rb:73:in `dispatch' 
actionpack (3.2.3) lib/action_dispatch/routing/route_set.rb:36:in `call' 
journey (1.0.3) lib/journey/router.rb:68:in `block in call' 
journey (1.0.3) lib/journey/router.rb:56:in `each' 
journey (1.0.3) lib/journey/router.rb:56:in `call' 
actionpack (3.2.3) lib/action_dispatch/routing/route_set.rb:600:in `call' 
warden (1.1.1) lib/warden/manager.rb:35:in `block in call' 
warden (1.1.1) lib/warden/manager.rb:34:in `catch' 
warden (1.1.1) lib/warden/manager.rb:34:in `call' 
actionpack (3.2.3) lib/action_dispatch/middleware/best_standards_support.rb:17:in `call' 
rack (1.4.1) lib/rack/etag.rb:23:in `call' 
rack (1.4.1) lib/rack/conditionalget.rb:25:in `call' 
actionpack (3.2.3) lib/action_dispatch/middleware/head.rb:14:in `call' 
actionpack (3.2.3) lib/action_dispatch/middleware/params_parser.rb:21:in `call' 
actionpack (3.2.3) lib/action_dispatch/middleware/flash.rb:242:in `call' 
rack (1.4.1) lib/rack/session/abstract/id.rb:205:in `context' 
rack (1.4.1) lib/rack/session/abstract/id.rb:200:in `call' 
actionpack (3.2.3) lib/action_dispatch/middleware/cookies.rb:338:in `call' 
activerecord (3.2.3) lib/active_record/query_cache.rb:64:in `call' 
activerecord (3.2.3) lib/active_record/connection_adapters/abstract/connection_pool.rb:467:in `call' 
actionpack (3.2.3) lib/action_dispatch/middleware/callbacks.rb:28:in `block in call' 
activesupport (3.2.3) lib/active_support/callbacks.rb:405:in `_run__496782642__call__984513863__callbacks' 
activesupport (3.2.3) lib/active_support/callbacks.rb:405:in `__run_callback' 
activesupport (3.2.3) lib/active_support/callbacks.rb:385:in `_run_call_callbacks' 
activesupport (3.2.3) lib/active_support/callbacks.rb:81:in `run_callbacks' 
actionpack (3.2.3) lib/action_dispatch/middleware/callbacks.rb:27:in `call' 
actionpack (3.2.3) lib/action_dispatch/middleware/reloader.rb:65:in `call' 
actionpack (3.2.3) lib/action_dispatch/middleware/remote_ip.rb:31:in `call' 
actionpack (3.2.3) lib/action_dispatch/middleware/debug_exceptions.rb:16:in `call' 
actionpack (3.2.3) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call' 
railties (3.2.3) lib/rails/rack/logger.rb:26:in `call_app' 
railties (3.2.3) lib/rails/rack/logger.rb:16:in `call' 
actionpack (3.2.3) lib/action_dispatch/middleware/request_id.rb:22:in `call' 
rack (1.4.1) lib/rack/methodoverride.rb:21:in `call' 
rack (1.4.1) lib/rack/runtime.rb:17:in `call' 
activesupport (3.2.3) lib/active_support/cache/strategy/local_cache.rb:72:in `call' 
rack (1.4.1) lib/rack/lock.rb:15:in `call' 
actionpack (3.2.3) lib/action_dispatch/middleware/static.rb:62:in `call' 
railties (3.2.3) lib/rails/engine.rb:479:in `call' 
railties (3.2.3) lib/rails/application.rb:220:in `call' 
rack (1.4.1) lib/rack/content_length.rb:14:in `call' 
railties (3.2.3) lib/rails/rack/log_tailer.rb:14:in `call' 
rack (1.4.1) lib/rack/handler/webrick.rb:59:in `service' 
/home/toaksie/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/webrick/httpserver.rb:138:in `service' 
/home/toaksie/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/webrick/httpserver.rb:94:in `run' 
/home/toaksie/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/webrick/server.rb:191:in `block in start_thread' 

. 감사합니다

+1

'gravatar_for '도우미에서'@ user.email.downcase' 대신'user.email.downcase'가되어야합니까? –

+1

Btw, 오류가있는 코드는 정확히 어디에서 오류가 발생하는지 전체 스택 추적 없이는 유용하지 않습니다. –

+0

@ KL-7'@ user.email.downcase'를 user.email.downcase'로 변경했습니다. 같은 문제가 발생하고 스택 추적도 추가되었습니다. 감사합니다. – Tom

답변

1

귀하의 prbolem은 귀하의 tab_check.html.erb에 쇼 템플릿을 렌더링하지만 사용자가 초기화되지 않은 것입니다. 쇼보기에서 부분 렌더링을 사용하면 show 액션이 실행되고 있지 않습니다. 사용자는 tab_check 액션에서도 설정해야합니다.

tab_check 작업에 @user = User.find(params[:id])을 추가하십시오.