2013-02-26 74 views
0

的情況下,我會對它nested_form這種形式:填充字段名稱是,file_field

<%= f.fields_for :uploads do |file| %> 
     <%= file.label 'File name :'%> 
     <%= file.text_field :name, :size => "19", :id=>"field" %>  
     <%= file.file_field :file if file.object.new_record? %> 
     <p> 
     <%= file.link_to_remove "Delete" %> 
    <% end %> 

    <%= f.link_to_add "Add", :uploads, :class=>"btn" %> 

我想有text_field「名字」,當用戶選擇一個文件(只是名稱或延長填充),但我不知道如何做到這一點,因爲我可以有很多file_fields,而不只是一個。

你能幫助我嗎?

+0

你打算選擇一個正確的答案? – 2013-03-01 07:36:41

回答

0

嘗試這樣的:

<%= f.fields_for :uploads do |file| %> 
    <%= file.label 'File name :'%> 
    <%= text_field_tag :name, nil, :size => 19 %>  
    <%= file.file_field :file if file.object.new_record? %> 
    <%= file.link_to_remove "Delete" %> 
    <% end %> 

    <%= f.link_to_add "Add", :uploads, :class=>"btn" %> 
+0

它不起作用,這是值得的:我沒有保存的文件名稱了... – eluus 2013-02-26 16:27:35

0

如果你想這樣做,與JS我想出的辦法與基本設置上與您要填充的值的輸入數據屬性。

當您的視圖渲染它會嵌入在您需要的輸入數據的屬性,那麼以後的文件已準備就緒,你可以使用jQuery選擇與特定數據屬性的所有輸入和設置它們的值。

在你看來:

<%= f.fields_for :uploads do |file| %> 
    <%= file.label 'File name :'%> 
    <%= file.text_field :name, :size => "19", :id=>"field", :data => { "for-auto-fill" => "some value" } %>  
    <%= file.file_field :file if file.object.new_record? %> 
    <p> 
    <%= file.link_to_remove "Delete" %> 
<% end %> 

<%= f.link_to_add "Add", :uploads, :class=>"btn" %> 

在你的JavaScript:

/* Select all elements with a 'for-auto-fill' data attribute */ 
$('[for-auto-fill]').each(function(){ 
    /* For each one, set it's value to the value that you set on the data attribute */ 
    $(this).val(($(this).data().forAutoFill)); 
}); 
+0

對不起,JS沒有正確突出顯示評論。我不確定如何解決這個問題,但我認爲內聯評論會更清晰。 – 2013-02-26 16:36:47