在Rails中传递所选单选按钮的值

时间:2019-02-02 23:32:52

标签: ruby-on-rails ruby

我正在Rails中开发一个具有教师和学生用户的应用程序。我想列出所有属于老师的用户,然后让老师选择要向其发送消息的学生。我有一个消息模型,该模型具有:content和:user_id作为参数。我想根据所选的学生设置: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 %>

因此,我要遍历所有学生,并使用单选按钮打印与当前用户(老师)具有相同ID的学生。单选按钮的值是学生的ID。然后,我想将该值传递给消息的:user_id,以便可以从学生的视图中检索该值。

当前,此代码始终传递最后列出的学生而不是所选学生的值。我该如何更改

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

找到选中的学生而不是最后一个?

我确实使用

测试了这段代码
 <%= f.hidden_field :user_id, :value => @current_user.id %>

确实有效,但是我当然不需要current_user的ID。感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

如果您想为学生提供一个带有单选按钮的表单,则需要一点JavaScript(或Jquery),您所要做的就是在这些单选按钮上放置一个侦听器,当用户单击其中的一个时,您会更改hidden名称的user_id输入。

this链接中的用户示例将帮助您将侦听器置于一堆单选按钮上并更改另一个字段值,这将是这样的:

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

您要做的就是确保name=student[id]#user_id,如果您使用这种方法,则不再需要以下行:

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

希望它能起作用。