我需要创建一个表单,用户可以上传多个文件,然后在关闭文件之前检查某些属性。每个文件输入字段应显示在表格中,以及每个文件输入字段的复选框。
但是,我不知道表中有多少条目。它取决于某个文件夹中的文件数量,并且会发生变化。
所以我必须创建表和表单的代码是:
<% counter = 0 %>
<%= simple_form_for(@myResource, :as => :myResource, :html => {:multipart => true}) do |f| %>
<table>
<% @filesInFolder.each do |file| %>
<tr>
<td>
<%= // Need checkboxes here %>
</td>
</tr>
<% counter = counter+1 %>
<% end %>
</table>
<% end %>
现在,我可以使用'check_box_tag'和'file_field_tag'轻松放置复选框和输入字段。但是,我不知道如何在另一边访问它们,因为我习惯于做'f.check_box'和'f.file_field'。我不知道在这种情况下如何使用'f.check_box',因为我必须提前给他们名字
f.check_box :input_checkbox1 ...
我需要根据我创建的动态名称给它们动态名称,所以使用'check_box_tag'我可以去
check_box_tag "checkBox#{counter}"
那么如何创建一个我可以使用控制器轻松访问表单的复选框,但是创建尽可能多的复选框并动态命名它们?
编辑:为了澄清,@ fileInFolder是文件名的集合,但不是我想要上传的文件。假设我在该文件夹中有5个文件,然后我想要该界面5次,以便用户可以检查某些选项并将SUPPLEMENTARY文件上传到文件夹中已有的文件。 此外,上传文件会创建多个记录,但每个文件上传一个记录,而不是文件夹中的每个文件。因此,如果我在文件夹中有5个文件,并且用户只检查其中3个文件的框,我将创建3个新记录
答案 0 :(得分:-1)
像你想要的那样计算:
<%= simple_form_for(@myResource, :as => :myResource, :html => {:multipart => true}) do |f| %>
<table>
<% @filesInFolder.each_with_index do |file, index| %>
<tr>
<td>
<%= f.check_box "check-box-#{index}", file.whatever %>
</td>
</tr>
<% end %>
</table>
<% end %>
当然,你的变量@filesInFolder必须是来自DB的选择