Rails 5 form_tag с таблицей и переключателем

Я новичок в Rails и изо всех сил пытаюсь отобразить переключатель, проверенный для конкретной записи на основе ее логического значения в БД (имя поля - 'main'). После отображения всех записей в таблице пользователь может выбрать другой переключатель, который снова должен быть обновлен в БД. Таким образом, в основном любое вложение можно сделать основным. Что бы я ни делал с form_tag, в большинстве случаев отображается страница, но без таблицы вообще.

вложения / index.html.erb:

<% form_tag user_attachments_path do %>
  <table class="table table-bordered table-striped">
    <thead>
      <tr>
        <th> Select one </th>
        <th> Attachment Name </th>
        <th> Creation Date </th>
        <th> Delete Attachment </th>
      </tr>
    </thead>
    <tbody>
      <% @attachments.each do |attachment| %>
        <%=hidden_field_tag :main, 'attachment.main' %>
        <tr>
          <td><% radio_button_tag "attachment_id", attachment.id, attachment.main %> </td>
          <td><%= attachment.attach.file.basename %></td>
          <td><%= attachment.posting_date %></td>
          <td><%= button_to "Delete", user_attachment_path(current_user, attachment), method: "delete", data: { confirm: 'Are you sure?' }, class: "btn btn-danger btn-outline btn-md" %></td>
        </tr>
      <% end %>
    </tbody>
  </table>
  <br>
  <%= submit_tag "Select Main", :class =>'button' %>
<% end %>

Routes.rb -

post :attachments, to: "attachments#update", as: :attachments

Кроме того, могу ли я получить доступ к значению недавно проверенного радио, как это, в моих приложениях # update, потому что вложение является локальной переменной и не уверен, имеет ли он область за пределами index.html

if params[:attachment][:main] == 'checked'

Спасибо за вашу помощь.


person Means    schedule 03.01.2017    source источник
comment
Используйте форму вместо тега формы   -  person Tushar Pal    schedule 03.01.2017
comment
Нет, form_for не используется, когда у вас несколько записей. form_for только для одной записи. Form_tag - это решение, но я столкнулся с проблемой маршрутизации.   -  person Means    schedule 03.01.2017
comment
Спасибо за структуру таблицы в form_tag, это было полезно !!   -  person Arihant    schedule 22.08.2018


Ответы (1)


Для отображения необходимо изменить erb. На данный момент он только выполняет код. Это может помочь.

<% form_tag user_attachments_path do %>

должно быть

<%= form_tag user_attachments_path do %>
person margo    schedule 03.01.2017
comment
да, я уже понял это, но основная проблема заключается в том, что form_tag направляется не-RESTful методу, скажем update_main в контроллере, похожем на этот railscasts: railscasts.com/episodes/165-edit-multiple?view=asciicast. Собственно что-то с form_tag и routes - person Means; 03.01.2017
comment
В вопросе говорилось: «Что бы я ни делал с form_tag, в лучшем случае отображается страница, но без таблицы вообще», на который я ответил. Возможно, вы захотите начать новую беседу по другому вопросу. Что произойдет, если вы нажмете кнопку отправки? Посмотрите журналы, и вы увидите, что передается в хэше params и как он отформатирован. Также в erb radio_button_tag отсутствует знак равенства. tbh, я не уверен, что понимаю, чего вы пытаетесь достичь, поэтому я собираюсь опубликовать еще один ответ с моими предположениями. - person margo; 03.01.2017