传递Rails中选定单选按钮的值



我正在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 %>

因此,我循环浏览所有学生,并用单选按钮打印那些与当前用户(教师)具有相同ID的学生。单选按钮的值是学生的id。然后我想将该值传递给消息的:user_id,这样学生的视图就可以检索到该值。

目前,此代码总是传递最后一个列出的学生的值,而不是所选学生的值。如何更改

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

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

我确实使用测试了这个代码

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

这确实有效,但我当然不想要current_user的id。谢谢你的帮助!

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

这个链接中的用户示例将帮助你将监听器放在一堆单选按钮上,并更改另一个字段值,它将是这样的:

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

你所要做的就是确保name=student[id]#user_id,如果你使用这种方法,你就不再需要这条线了:

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

希望它能起作用。

最新更新