0

アプリへの写真のアップロードを処理するために Paperclip を使用していますが、写真を取得する際に問題が発生しています

すべての画像を正常に追加/削除/表示できますが、モデルの写真を 1 つだけ取得するにはどうすればよいですか? のように、最初のもの?

それらをすべて取得するには、次を使用します。

<%= form_for @hotel, :html => {:multipart => true} do |f| %>
  <%= f.fields_for :hphotos do |hp|%>
     <%= image_tag(hp.object.hphoto.url(:medium))%>
  <%end%>
<%end%>

これは問題なく動作しますが、私のインデックスでは、表示されるホテルごとに 1 枚の写真のみを表示したいと考えています。私は得ています:

undefined method `Hphotos'
I also ran across: undefined method `url' when testing

問題はコントローラーにあると思われますが、何がわからないので、ここにあります(作成アクションも入れていますが、これは正常に機能します)

 def index

   @hotels= Hotel.search(params)
   @hotels= <pagination>
#I think the issue is here
   @hotels.Hphotos.build #changing to @hotels.Hphoto.build or @hotels.hphotos.build won't work and I think my issue is here.
    respond_to do |format|
      format.html 
      format.json { render :json => @hotels }
    end
  end

これはうまくいきます:

def new
    @hotel = Hotel.new
    2.times { @hotel.hphotos.build }
end

私はインデックスビューでこれをやっています:

<% @hotels.each do |hotel|%>
(...)
<%= image_tag hotel.hphoto.url(:small) %>
(...)
<%end%>

私が言ったように、最初の画像だけを取得したかったのですが、インデックスでもすべてを取得できないため、問題はコントローラーにあると思います。

読んでくれてありがとう、どんなヒントでも大歓迎です、私はちょっと立ち往生しています:)

よろしく

4

1 に答える 1

1

index ビューでは、hotel.hphoto を呼び出していますが、これは 1 対多の関係であるため、hphotos である必要があります。最初のものが必要な場合は、次のようにする必要があります。

hotel.hphotos.first.url(:small)
于 2012-05-17T15:54:08.807 に答える