2016-10-06 4 views
0

私は、MasonryとImgZoomで表示する予定のアルバムを作成しているため、クリックすると大きな画像が表示されます。サムネイルを元の画像にリンクするときの未定義のメソッド 'to_model'

ImgZoomによると、ズーム機能させるために、次の操作を行う必要があります

<a href="path/to/real/image.png"> 
    <img src="path/to/image's/thumbnail.png class="thumbnail" /> 
</a> 

だから私はその中に次のように、アップローダーを生成:

class ImageUploader < CarrierWave::Uploader::Base 

    include CarrierWave::MiniMagick 

    storage :file 

    def store_dir 
    'portfolio/photos' 
    end 

    version :thumb do 
    process :resize_to_fit => [220, nil] 
    end 
end 

すべてが完璧に動作します私は両方のバージョンを問題なく呼び出すことができますが、ImgZoomの指示に従うと次のようになります:

<%= @portfolio.photos.each do |p| %> 
#This is a nested form inside the portfolio form, so I need to do this to get my images 

<%= link_to image_tag p.image.thumb.url, p.image %> 

か:

<%= link_to p.image do %> 
    <%= image_tag p.image.thumb.url, :class => 'thumbnail' %> 
<% end %> 

私は次のエラーを取得しています:undefined method 'to_model' for #<ImageUploader:0x0000000c35f4d8>

私は、スタックオーバーフロー上で同様の主題を見つけましたが、アスカーは明確ではありませんでしたし、フォーラム上の他の質問をする招待されました私は見つけることができませんでした。 私は個別に 'p.image'と 'p.image.thumb.url'にアクセスできますが、単純なhtmlで完全に実行可能なリンクを作ることはできません。

私は間違っていますか?

は、

+1

あなたは.... '' <%=のlink_to p.image.url DO%>を試してみましたか? –

+0

これです。これは簡単でした。畜生!私はそれを受け入れることができるようにこれを本当の答えにしてください。大いに感謝する! – Jaeger

+0

あなたはSimonの答えを受け入れることができます。私は助けになることをうれしく思っています。 –

答えて

1

まず事前にありがとうございリンクにクラス「サムネイル」を作成するには、適切にそれを宣言する必要があります。

<%= link_to p.image.url do %> 
    <%= image_tag p.image.url, class: "thumbnail" %> 
<% end %> 

次に、画像を表示するための適切なルートを作成したかどうかを確認する必要があります。これは、静的資産に適切にリンクすること(画像が「パブリック」になっていないため)、またはテンプレートビューを使用して行うことができます。

"public"の下に格納されているファイルの場合、リンクする方法はうまくいくはずです。

IMAGE_PATHがドキュメントにどのように動作するかチェックしてください:image_path (and more)

+0

こんにちは、あなたの答えをありがとう、私はイメージに到達することについて肯定的であり、 "public"の中にそれらの場所は、しかし、私はあなたのコードを試したと私はまだ同じエラーを得る(サムネイルクラスを忘れて申し訳ありません、質問のため) – Jaeger

+0

あなたはp.imageにリンクしていますが、適切なルートにはなりません。このイメージがビューにバインドされていないことを意味します。そのため、エラーがスローされます。あなたは試してみることができます '<%= link_to image_tag(p.image.url)do%>' あなたのために働くのですか? –

+0

はい、p.imageの代わりにp.image.urlをリンクするのが正しいです – Jaeger

関連する問題