2017-10-21 18 views
-1

この1つが私を困惑させます。私は2週間前から頭を叩き、どこにもいない。申し訳ありませんが、それは明らかですが、私はまだ未経験の初心者です...Unsplashオブジェクトメソッドはコンソールからは利用できますが、ビューからは利用できません

アプリは、Unsplash画像サービスへのAPI呼び出しを行っています。

def show_photo(size) 
@photo = Unsplash::Photo.random(query:"cars")[:urls][size.to_sym] 
end 

ビューが有する以下:そのようなapplication_helperとして

は、以下の方法有する

<%= image_tag(show_photo('small'), height: "220", width:"220") %> 

をそして、それは細かい表示します。

問題は、オブジェクトから他のいくつかのメソッドを取得したいときです。私は、アプリケーション内の別の方法を追加しました。このように助けた:私は、このエラーを取得する<% = show_author%>

:によって 写真:

def show_author 
    @photo.user.name 
end 

と対応するビュー 未定義のメソッド `ユーザー'#

しかしRailsの中にメソッドを呼び出すときのために、それが正常に動作コンソール:

@photo = Unsplash::Photo.random(query:"cars") 
=> #<Unsplash::Photo:0x00000004fcf950 @attributes=#<OpenStruct id="CKeoh- 
    90U3E", created_at="2017 ....... 

2.3.0 :003 > @photo.user.name 
=> "Florian Schneider" 

ビューでuser.nameを使用できるようにするには何が必要ですか?

事前にどうもありがとう、

ロドルフ

+0

投稿された回答に返信いただければ幸いです。 – theartofbeing

答えて

1

@photoあなたは[:urls][size.to_sym]で@photoにいくつかのメタデータを呼び出していると、あなたが上に.userを呼び出すことはできませんように見える、写真ではありませんそのメタデータの

あなたは、基本的に次の操作を実行したい場合がありますUnsplash::Photo.random(query:"cars")[:urls][size.to_sym].user

を言っている:

def photo 
@photo ||= Unsplash::Photo.random(query:"cars") 
end 

def resized_photo(size) 
photo[:urls][size.to_sym] 
end 

def photo_author_name 
    photo.user.name 
end 

あなたは同じ呼び出しを複数回行っていないので、ところで@photo ||=は、API呼び出しをmemoizingています。

+0

theartofbeing、あなたの答えをありがとう、これは絶対に正常に動作します!そしてそれは完全に意味をなさない...後半の答えは申し訳ありませんが、私はプロの理由から私のMacから離れていました! –

関連する問題