我有一个nested_form和这个表单:
<%= 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“name”(只是名称和扩展名),但我不知道如何使用javascript,因为我可以拥有大量的file_fields而不仅仅是之一。
你能帮我吗?
答案 0 :(得分: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" %>
答案 1 :(得分: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));
});