Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/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
File upload 如何在rails 4中以嵌套形式显示文件上载按钮一次?_File Upload_Ruby On Rails 4_Paperclip_Nested Forms - Fatal编程技术网

File upload 如何在rails 4中以嵌套形式显示文件上载按钮一次?

File upload 如何在rails 4中以嵌套形式显示文件上载按钮一次?,file-upload,ruby-on-rails-4,paperclip,nested-forms,File Upload,Ruby On Rails 4,Paperclip,Nested Forms,我在rails应用程序中有一个父(播放列表)->子(曲目)结构 我在表单中所做的是显示父属性,然后我有一个用于子属性的表 <%= form_for(@playlist) do |f| %> <% if @playlist.errors.any? %> <div id="error_explanation"> <h2><%= pluralize(@playlist.errors.count, "error") %>

我在rails应用程序中有一个父(播放列表)->子(曲目)结构

我在表单中所做的是显示父属性,然后我有一个用于子属性的表

 <%= form_for(@playlist) do |f| %>
  <% if @playlist.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@playlist.errors.count, "error") %> prohibited this playlist from being saved:</h2>

      <ul>
      <% @playlist.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= f.label "Playlist Name: " %>
    <%= f.text_field :name %>
  </div>
  <div class="field">
    <%= f.label " Image: " %>
    <%= f.file_field :photo %>
  </div>
  <br>
  <div class="field">
  <h5> description: </h5>
  <br>
    <%= f.text_area :description, :size => "80x3"%>
  </div>
  <br>
  <div>
    <h5> Add some music: </h5>
  </div>
  <div class="field">
    <%= f.fields_for :tracks, Track.new do |ff| %>
      <%= ff.file_field :audio, :multiple => true %>
    <% end %>
  </div>
  <% if !@playlist.tracks.blank? %>
  <table id="tracks" class="display">
      <thead>
        <tr>
          <th>Delete</th>
          <th>Track</th>
          <th>Album</th>
          <th>Artist</th>
          <th>Label</th>
        </tr>
      </thead>
    <tbody>
    <%= f.fields_for :tracks do |ff| %>
      <%= render "track_fields", :f => ff %>
    <% end %>
    </tbody>
  </table>
  <% end %>
  <div class="actions">
    <%= f.submit "Save" %>
  </div>
<% end %>

禁止保存此播放列表:

说明:
“80x3”%>
添加一些音乐: 正确%> 删去 轨道 专辑 艺术家 标签 ff%>
我用回形针上传文件。我在播放列表模型上上传图像,在曲目模型上上传MP3

有关守则如下:

<div class="field">
        <%= f.fields_for :tracks, Track.new do |ff| %>
          <%= ff.file_field :audio, :multiple => true %>
        <% end %>
</div>

正确%>
我觉得这是一个骇客。为什么我必须添加一个新曲目才能显示一次“文件”字段(选择“文件”按钮)?在表格的底部,你会注意到我必须打电话给你

 <%= f.fields_for :tracks do |ff| %>

再次,因为我想迭代播放列表中的所有曲目,并在表格中显示它们

不确定这个问题是否有意义,但我如何显示文件字段一次(我觉得Track.new是一个黑客,我认为它在保存模型时搞砸了)

编辑: 下面是一个屏幕截图,显示了如果我没有跟踪,会发生什么。新建:


只要试一下普通的
。这将创建尽可能多的按钮(选择文件…),因为有我不想要的曲目。你能发布它的图片吗?