2011-09-29 61 views
10

因此,我正在構建一個嵌套表單,其中包含Campaigns模型和Sites模型,其中Campaigns has_many網站。在我的廣告系列形成我: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

從形式輔助對象(在你的情況建設者˚F),你應該能夠訪問模型對象和你查找的網址是這樣的:

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

圖片圖片 _url取決於您如何命名屬性,但對於您的示例,這應該是正確的。

0

你可能想調查回形針寶石:https://github.com/thoughtbot/paperclip

它可以讓你這樣做是爲了顯示現有圖片的縮略圖。

<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對象,因爲我沒有遍歷屬於某個活動的所有網站 - 我只是使用fields_for。 – dshipper

+0

您可以發佈您的控制器代碼,以便我可以計算出您需要執行的操作嗎? – David