2012-05-09 75 views
0

私はこれは私がセッションに値を格納私のコントローラは何かということですセッションでいくつかの値を格納しています:これを解決するにはNoMethodError in Home#index in rails?

def callback 
    client = LinkedIn::Client.new("ssssssssssss", "444444444444") 
    if session[:atoken].nil? 
     pin = params[:oauth_verifier] 
     atoken, asecret = client.authorize_from_request(session[:rtoken], session[:rsecret], pin) 
     session[:atoken] = atoken 
     session[:asecret] = asecret 
    else 
     client.authorize_from_access(session[:atoken], session[:asecret]) 
    end 
    @loggedin_linkedin_userinfo = client.profile(:fields => [:id,:summary, :headline, :first_name, :last_name, :picture_url]) 
    @loggedin_linkedin_education = client.profile(:fields => [:educations]) 
    @loggedin_linkedin_position = client.profile(:fields => [:positions]) 
    @loggedin_linkedin_connections = client.connections 

    session[:link_total] = @loggedin_linkedin_connections["total"] 
    session[:link_headline] = @loggedin_linkedin_userinfo["headline"] 
    session[:link_first_name] = @loggedin_linkedin_connections["first_name"] 
    session[:link_last_name] = @loggedin_linkedin_connections["last_name"] 
    session[:link_summary] = @loggedin_linkedin_connections["summary"] 
    session[:picture_url] = @loggedin_linkedin_connections["picture_url"] 

    redirect_to :controller => 'home', :action => 'index' 
    end 

これが私の見解です:

<div class="datainfo profile"> 
         <h2 class="inner">Welcome, 
          <% if session[:user].nil? 
           session[:link_first_name] + " " + session[:link_last_name] 
          else 
           session[:user].first_name + " " + session[:user].last_name 
          end %> 
          </h2> 
         <p class="loc"> 
          <% 
          if session[:user].nil? 
           Linkedinuser 
          else 
          @countryDetails = Country.find(:all, :conditions => {:id => session[:user].country_id})  
          end 
           #for c in countryDetails 
           #c.country_name #loop 
          %> 
          <% if session[:user].nil? 
           Linkedinuser 
          else 
           session[:user].city + "," + @countryDetails[0].country_name.to_s  
          end 
          %> 
         </p> 
         <p class="job"> 

         </p> 
         <p class="status"> 
          <spam> 
           <% if session[:user].nil? 
             Linkedinuser 
            else 
             link_to "Complete Profile", session[:user], :class=>"small-btn" 
           end 
          %> 
          </spam> 
          - Profile Completed %. 
         </p> 
        </div> 

が、私はこれを実行したときに私が取得エラーの後、私を助けてください。

undefined method `+' for nil:NilClass 

Extracted source (around line #35): 

32:      <div class="datainfo profile"> 
33:       <h2 class="inner">Welcome, 
34:        <% if session[:user].nil? 
35:         session[:link_first_name] + " " + session[:link_last_name] 
36:        else 
37:         session[:user].first_name + " " + session[:user].last_name 
38:        end %> 

私は午前から苦労していますが、解決策を見つけることができませんでした。

答えて

1

セッション中に:link_first_nameキーがありません(またはそれはnilです)。その理由は、+メソッドがnilsに対して定義されていないと言います。

それを行う前に、あなたのセッションを確認してください:あなたの迅速な対応のための

<% if session[:user].nil? && !session[:link_first_name].nil? 
    session[:link_first_name] + " " + session[:link_last_name] 
else ... 
+0

感謝を。私は次のエラーが発生しました。定義されていないメソッド 'first_name' for nil:NilClass&抽出されたソースは<%if session [:link_first_name] .nil? &&!session [:link_last_name] .nil? 35:\t \t \t \t \t \t \t \tセッション【:link_first_name] + "" +セッション【:link_last_name] 36:\t \t \t \t \t \t他\t 37:\t \t \t \t \t \t \t \tセッション〔: user]。first_name + "" + session [:user] .last_name 38:\t \t \t \t \t \t \t end%> – SAR

+0

チャットに来てください。それは私を助けるでしょう – SAR

+0

あなたはまた、セッション[:ユーザー]が他の部分で 'nil'でないかどうかを確認する必要があります –