Как показать кнопку загрузки файла один раз во вложенной форме в rails 4?

У меня есть родительская (плейлист) -> дочерняя (треки) структура в моем приложении 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 %>

Я использую скрепку для загрузки файлов. Я загружаю изображения по модели плейлиста и mp3-файлы по модели треков.

Код, о котором идет речь, следующий:

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

Я чувствую, что это взломать. Почему мне нужно добавить новую дорожку, чтобы один раз показать file_field (выбрать кнопку файла)? Внизу формы вы заметите, что мне нужно позвонить

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

еще раз, потому что я хочу перебрать все дорожки для плейлиста и показать их в таблице.

Не уверен, что этот вопрос имеет смысл, но как мне показать файл file_field один раз (я чувствую, что Track.new - это хак, и я думаю, что он запутался в сохранении модели)?

РЕДАКТИРОВАТЬ: вот скриншот того, что происходит, если у меня нет Track.new:

введите описание изображения здесь

0 ответов

Другие вопросы по тегам