2011-09-29 4 views
10

したがって、キャンペーンモデルと、キャンペーンhas_many Sitesが設定されたサイトモデルで入れ子になったフォームを作成しています。Railsイメージ付き入れ子フォーム

<%= f.fields_for :sites do |builder| %> 
    <%= render "site_fields", :f => builder %> 
<% end %> 

そして、私が持っている_site_fields.html.erbに:

<div class="field"> 
<%= f.label :title %><br /> 
<%= f.text_field :title %> 
</div> 
<%= f.label "Image"%><br> 
<%= f.file_field :image %> 
<div class="field"> 
<%= f.label :url %><br> 
<%= f.text_field :url %> 
</div> 

これは、すべての(衝撃的な)動作するようですが、私はのプレビューがしたい私のキャンペーンでは、私が持って形成フォーム内の特定のサイトに対してすでにアップロードされている画像。ですから、私はf.file_field:imageを持っていますので、その画像のプレビューを表示することもできます。問題は、私がf.fields_forを使用しているため、レンダリングされている現在のサイトにアクセスできないと思われることです。

提案がありますか?私は、比較的シンプルなものが欠けていると確信しています。

ありがとうございます!

答えて

23

<%= image_tag f.object.image_url(:thumb) %> 

イメージイメージ _urlは属性の名前付け方法によって異なりますが、サンプルには正しいはずです。

0

あなたはクリップの宝石を調査することもできます。https://github.com/thoughtbot/paperclip

それはあなたが既存の画像のサムネイルを表示するには、この操作を行うことができます。あなたはモデルオブジェクトとURL、あなたはこのように探しにアクセスすることができるはずフォームヘルパーオブジェクト(あなたのケースでビルダーと F )から

<div class="field"> 
    <% if @thing.logo? %> 
    <%= image_tag @thing.logo(:thumb) %><br/> 
     Change 
    <% end %> 
    <%= f.label :logo %> 
    <%= f.file_field :logo %> 
    </div> 
+0

ありがとうございます!私は実際にPaperclipを使用しています。問題は、どこにでもキャンペーンに属しているすべてのサイトを反復しているわけではないので、@thingオブジェクトを取得する場所です。 – dshipper

+0

コントローラのコードを投稿して、何をする必要があるのでしょうか? – David

関連する問題