在file_field的情况下填写字段名称

时间:2013-02-26 16:15:29

标签: javascript ruby-on-rails ruby-on-rails-3

我有一个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而不仅仅是之一。

你能帮我吗?

2 个答案:

答案 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));
});