0

私はセッションにいくつかの値を保存していますこれは私がセッションに値を保存する私のコントローラーです:

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 %>

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

4

1 に答える 1

1

:link_first_nameセッションにキーがない(またはキーがあるnil)ため、+メソッドがnilsに対して定義されていないと表示されます。

その前にセッションを確認してください。

<% if session[:user].nil? && !session[:link_first_name].nil?
  session[:link_first_name] + " " + session[:link_last_name]
else ...
于 2012-05-09T08:39:52.213 に答える