2016-08-08 1 views
0

私はRails 4で簡単なアプリを作る方法を見つけようとしています。Railsコンソールのクエリが機能します。アプリ内で同じリクエストがエラーを起こす

私はユーザー、プロフィール、アイデンティティのモデルを持っています。団体は以下のとおりです。

ユーザー

has_many :identities, dependent: :destroy 

has_one :profile, dependent: :destroy 

プロフィール

belongs_to :user 

アイデンティティ私は書くことができますコンソールで

belongs_to :user 

P = Profile.last p.user.identities.map(&:プロバイダ)?.INCLUDE(「ログインfacebook」)

、それが正しくの結果生成します。私は、プロファイルのヘルパーメソッドで次のように記述しようとする偽

を:

undefined method `user' for nil:NilClass 

私はアプリでログインしているユーザーがあります。

if @profile.user.identities.map(&:provider).include?('facebook') 

私が言うエラーが出ます。なぜ私はコンソールでこれをうまく尋ねることができるのか理解できませんが、アプリで試してみるとエラーになります。

誰かが間違っているのを見ることができますか?

+0

の関連付けが何に見えるかに

<%= helper_method_name(@profile) %> # make sure your @profile is a 'Profile' object 

show.html.erbファイル内のようなヘルパーメソッドを呼び出しますか? – jdgray

+0

@profileはどこから来ますか? – Milind

+0

デフォルトのデバッグ用の宝石 '' 'byebug'''を使って' '' @ profile'''を検査できますか? – Nathan

答えて

0

@profilenilです。そのため、エラーが発生します。

show.html.erbファイルからヘルパーメソッドを呼び出すと仮定します。 profiles_helper.rb

def helper_method_name(profile) 
    if profile.user.identities.map(&:provider).include?('facebook') 
     // do something 
    end 
end 
+0

しかし、私の#profileはnilではありません。私はショーページの次の行に@profile.created_atを書くことができ、時間が表示されます。これらのコメントは一度も許可されないので、 'a'シンボルの代わりに#を使用します。 – Mel

+0

@Mei、何とかあなたの 'ヘルパー 'は' @profile'変数を受け取ることができません。 – Emu

+0

あなたは正しいです。私は別のビューで部分をレンダリングしようとしていました。それが問題の原因でした。ありがとうございました – Mel

関連する問題