Передача значения выбранного переключателя в Rails - PullRequest
0 голосов
/ 03 февраля 2019

Я работаю над приложением в Rails, которое имеет учителей и учеников.Я хочу перечислить всех пользователей, которые принадлежат учителю, а затем позволить учителю выбрать учащегося для отправки сообщения.У меня есть модель сообщения, которая имеет: content и: user_id для params.Я хочу установить: user_id на основе выбранного студента.Вот мой код:

<% @students = Student.all %>
    <% @students.each do |student| %>
          <% if student[:teacher_id] == @current_user.id %>
            <%= radio_button 'student', 'id', student.id %>
            <%= student.name %>
            <% @current_student = Student.find(student.id) %>
          <% end %>
    <% end %>

<%= form_for Message.new do |f| %>
   <%= f.text_area :content, class: 'messageTextarea' %> <br>
   <%= f.hidden_field :user_id, :value => @current_student.id %>
   <%= f.submit %>
<% end %>

Итак, я переключаю всех учеников и печатаю тех, у кого тот же идентификатор, что и у текущего пользователя (учителя), с помощью переключателя.Значение переключателя - это идентификатор студента.Затем я хочу передать это значение: user_id сообщения, чтобы затем его можно было извлечь для просмотра студентом.

В настоящее время этот код всегда передает значение последнего указанного ученика, а не выбранного ученика.Как я могу изменить

<% @current_student = Student.find(student.id) %>

, чтобы найти выбранного ученика, а не последнего?

Я проверял этот код, используя

 <%= f.hidden_field :user_id, :value => @current_user.id %>

, и это сработало,но мне не нужен идентификатор current_user, конечно.Спасибо за любую помощь!

1 Ответ

0 голосов
/ 03 февраля 2019

Если вам нужна одна форма с переключателями для студентов, вам понадобится немного JavaScript (или Jquery), все, что вам нужно сделать, это включить слушатель на эти переключатели, и когда пользователь нажмет на одну из них, выизмените hidden ввод user_id имени.

Пример пользователя в этой ссылке поможет вам включить слушателя в кучу переключателей и изменить другое значение поля, это будетчто-то вроде этого:

$('input[type=radio][name=student[id]]').change(function() {
    $('#user_id').val($(this).val());
});

все, что вам нужно сделать, это убедиться, что name=student[id] и #user_id, если вы использовали этот подход, вам больше не понадобится эта строка:

<% @current_student = Student.find(student.id) %>

Надеюсь, это сработает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...