Как определить идентификатор кнопки в другом представлении в зависимости от другого представления Rails - PullRequest
0 голосов
/ 13 октября 2019

Я создаю приложение, в котором некоторые действия перечислены в таблице с именем Fakultety (польский язык, извините), а участники включены в другую таблицу с именем Uczestnicy. У меня есть форма для отправки, где вы можете представить себя в действии, но я застрял при передаче значений в БД. Во-первых, я не знаю, как сообщить базе данных, на какое действие вы хотите назначить (я пытался изменить идентификатор кнопки отправки на идентификатор действия, а затем передать его в базу данных, но не знаю, как это сделать. это id: "#{@fakultet.id}" не работает) и позже я хочу подсчитать, сколько людей назначено полю participants в базе данных Fakultety, но я не хочу передавать все данные, просто идентификатор пользователя из таблицы с именемUczestnicy. Как это сделать? Я имею в виду просто передать идентификаторы в другую таблицу, и как указать базе данных, на какую деятельность я хочу быть назначен?

Это мой вид формы:

<h1>Zapisujesz sie na fakultet</h1>
<div class="form-group">
<div class="row">
  <div class="col-md-6 col-md-offset-3">
    <%= form_for(@participant, url: zapisy_path) do |f| %>
      <p>Imię:</p>
      <%= f.text_field :firstName, class: 'form-control' %>

      <p>Nazwisko:</p>
      <%= f.text_field :lastName, class: 'form-control' %>
      <p>Grupa:</p>
      <%= f.text_field :group, class: 'form-control' %>

      <%= f.submit "Zapisz się", class: "btn btn-primary" id: "#{@fakultet.id}"%>
    <% end %>
  </div>
  </div>
</div>

Кто-нибудьпонимаете меня и можете мне помочь?

Ответы [ 2 ]

0 голосов
/ 14 октября 2019

Rails предоставляет помощников по сбору форм , которые действительно упрощают назначение ассоциаций:

# I'm going to just do this in english
<%= form_for(@activity) do |f| %>
  <%= f.collection_select(:participant_ids, Partipicant.all, :id, :name, prompt: true, multiple: :new) %>
  # ...
<% end %>

Затем внесите белый список атрибута в массив:

params.require(:activity).permit(:foo, :bar, participants_ids: [])

Thatsвсе, что вам действительно нужно назначить ребенка родительскому ресурсу. Это делается как часть обычных действий создания / обновления родительского ресурса.

На самом деле вам не нужна форма для дочерних записей, если вы на самом деле не хотите создавать запись. В этом случае вы можете настроить вложенный ресурс или, если вы хотите создавать / редактировать несколько вложенных записей одновременно с родительской записью, вы можете использовать вложенные атрибуты .

0 голосов
/ 13 октября 2019

Сначала вы должны переименовать свои модели и таблицы на английский, это очень плохой шаблон для использования вашего языка, на английском его легче понять другим разработчикам. В зависимости от проблемы, вероятно, вы ищете hidden_field

<%= f.hidden_field :fakultet_id, :value => @fakultet.id %>

, и если вы хотите запросить Fakultety, для которого назначен пользователь, вы можете выбрать Fakultety, где participant_id неnil

Fakultety.where.not(participant_id: nil)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...