在循环中动态输出Simple_form字段

时间:2014-02-01 01:13:01

标签: ruby-on-rails ruby paperclip simple-form

我的模型附加了回形针字段,用于不同类型的文件。作为示例,文档类型“test_doc”允许上载三个文件,并且模型字段被命名为“test_doc1”,“test_doc2”,“test_doc3”。其他文档类型,如“another_doc”,具有不同数量的允许文件,所有文件都使用相同的命名约定命名。

我正在尝试创建一个通用文档上传页面,该页面获取需要添加的文档类型(存储在@document_type变量中)以及可以为该类型上载的最大文档数量(存储在@max_num变量中) )然后在视图中输出适当数量的字段

我想以下列格式输出字段,但是在使用文档类型和文档变量数的循环中输出。这需要在此代码块中的几个位置进行更改以动态输出变量,但我无法弄清楚如何执行此操作。

我希望有人可以帮助我将这段代码转换成一个循环,使用上面两个变量来输出正确数量的字段。

<%= f.input :aou_document1, :label => false, :wrapper => :append, :class => "form-group" do %>
<label class="col-sm-3 control-label no-padding-right">
  <% if @lap.aou_document1.blank? %>
      Choose <%= @document_type %>
  <% else %>
      <%= link_to @lap.aou_document1.url do %>
          <i class="icon-file-alt"></i>
          <%= @lap.aou_document1_file_name[0..40] %>...
      <% end %>
  <% end %>
</label>
<div class="col-sm-9">
  <% if !@lap.aou_document1.blank? %><span class="pull-left"><div class="space-4"></div>Replace with</span><% end %>
  <% if !@lap.aou_document1.blank? %><div class="space-4"></div><% end %><%= f.file_field :aou_document1, :class => "col-xs-7 col-sm-5" %>
</div>
<% end %>

1 个答案:

答案 0 :(得分:0)

fields_for帮助器将自动插入父级的所有嵌套字段,您不应该手动处理它。

您的通用表单应如下所示:

<%= form_for @document do |f| %>
  <%= fields_for :files do |file| %>
    your code for the files goes here

然后在控制器中,您只需为每个文档构建正确数量的文件。或者,您可以在创建文档时在回调中执行此操作。有很多方法可以做到,但绝对要查看fields_for标记。