2011-09-29 12 views
10

इसलिए मैं एक अभियान मॉडल और एक साइट मॉडल के साथ घोंसला वाला रूप बना रहा हूं जहां अभियान में कई साइटें हैं। मेरे अभियान के रूप में मेरे पास है:छवियों के साथ रेल नेस्टेड फॉर्म

<%= 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 है: छवि मैं भी उस छवि का पूर्वावलोकन दिखाने में सक्षम होना चाहूंगा। समस्या यह है कि मैं वर्तमान साइट को प्रस्तुत करने में सक्षम नहीं हूं क्योंकि मैं f.fields_for का उपयोग कर रहा हूं।

कोई सुझाव? मुझे यकीन है कि मैं अपेक्षाकृत सरल कुछ याद कर रहा हूँ।

अग्रिम धन्यवाद!

उत्तर

23
प्रपत्र सहायक ऑब्जेक्ट से

आप मॉडल वस्तु का उपयोग करने के लिए सक्षम होना चाहिए और यूआरएल के लिए अपने देख (अपने मामले बिल्डर और में) इस तरह:

<%= 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

धन्यवाद! मैं वास्तव में पेपरक्लिप का उपयोग कर रहा हूं, सवाल यह है कि @thing ऑब्जेक्ट कहां प्राप्त करें क्योंकि मैं कहीं भी किसी भी अभियान से संबंधित सभी साइटों के माध्यम से पुनरावृत्ति नहीं कर रहा हूं - मैं सिर्फ field_for का उपयोग कर रहा हूं। – dshipper

+0

क्या आप अपना कंट्रोलर कोड पोस्ट कर सकते हैं ताकि मैं काम कर सकूं जो आपको करना है? – David

संबंधित मुद्दे