Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails DynamicCall在rails中创建带有复选框的表作为表单的一部分_Ruby On Rails_Forms_Checkbox - Fatal编程技术网

Ruby on rails DynamicCall在rails中创建带有复选框的表作为表单的一部分

Ruby on rails DynamicCall在rails中创建带有复选框的表作为表单的一部分,ruby-on-rails,forms,checkbox,Ruby On Rails,Forms,Checkbox,我需要创建一个表单,用户可以上传多个文件,然后在发送文件之前检查某些属性。每个文件输入字段应显示在表格中,以及每个文件输入字段的复选框 然而,我不知道表中有多少条目。这取决于某个文件夹中的文件数,并且会发生变化 因此,我必须创建表和表单的代码是: <% counter = 0 %> <%= simple_form_for(@myResource, :as => :myResource, :html => {:multipart => true}) do |f|

我需要创建一个表单,用户可以上传多个文件,然后在发送文件之前检查某些属性。每个文件输入字段应显示在表格中,以及每个文件输入字段的复选框

然而,我不知道表中有多少条目。这取决于某个文件夹中的文件数,并且会发生变化

因此,我必须创建表和表单的代码是:

<% 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\u box\u tag”了

check_box_tag "checkBox#{counter}"
那么,我如何制作复选框,使其可以通过窗体的控制器轻松访问,同时创建所需数量的复选框并动态命名它们呢

编辑:为了澄清,@fileInFolder是文件名的集合,但不是我想要上传的文件。假设我在那个文件夹中有5个文件,那么我需要5次那个界面,这样用户就可以勾选某些选项,并将补充文件上传到文件夹中已有的文件中。
此外,上载文件将创建多个记录,但每个上载的文件一个记录,而不是每个文件夹中的文件一个记录。因此,如果我在文件夹中有5个文件,并且用户只勾选其中3个文件的复选框,我将创建3个新记录

进行计数,就像您希望做的那样:

<%= 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 %>
:myResource,:html=>{:multipart=>true})do | f |%>

当然,您的变量@filesInFolder必须是DB中的selecton,您有哪种型号?您可能需要查看嵌套表单,因为基本上您必须为每个文件创建要保存到的模型的实例化。因为向控制器发送请求不会创建一条记录,而是多条记录。这些记录本身是否与另一个模型中的一个基本记录相关?如果不更好地理解您想要实现的目标,这是一个很难回答的问题。是的,您打算如何将它们存储在数据库中,可能会使您的视图代码更容易(例如,使用嵌套表单)。但是,请澄清
@fileinfolder
-->这些文件在服务器上吗?因此,在这种情况下,用户实际上不是在“上载”文件,而是选择了已上载的文件,或者,您是否希望实际从用户的计算机读取文件夹(浏览器/javascript imho无法执行此操作,除非您使用java applet或flash)--在这种情况下:为什么不让用户上传多个文件呢?添加了Edit以澄清@fileinfolder,但它基本上是一个文件名数组,它为我提供了
未定义的方法“check-box-0”,用于#O yah!很抱歉真的,若你们使用这样的构造,字段的名称必须是对你们模型中字段的引用。是的,我知道,这是我面临的问题。
f.复选框
复选框标签
(不带
f.
)是否等效?不,不是。当您使用f.checkbox:field\u name时,您:field\u name是对数据库中字段的引用。并勾选复选框,只标记一个没有此引用的表单标记
<%= 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 %>