我正在为Ruby on Rails中的演示文稿注册应用程序。这样,我将显示可用演示文稿的列表,最后一列显示用于注册该特定演示文稿的按钮。
<table class="table">
<thead class="thead-dark">
<tr>
<th scope="col">Name</th>
# ...
</tr>
</thead>
<tbody>
<tr>
<% @presentations.each do |pres| %>
<td scope="row"><%= pres.Name %></td>
# ...
<td scope="row">
<% unless @current_student.Selected == pres.Titel %>
<%= form_tag students_select_path do %>
<%= submit_tag "Choose", class: "btn", value: pres.Title %>
<% end %>
</td>
</tr>
</tbody>
</table>
我希望按钮说"Choose"
,然后将参数pres.Title
发送给我定义的函数。由于某些原因,表中的按钮显示的是pres.Title
的值,而不是"Choose"
的值。如何解决?
当前有效的实施方式:
def addtodb
@student = Student.find_by(id: session[:student_id])
if @student.Selected == nil
prestitle = params[:commit]
@schueler.update_attribute(:Selected, prestitle)
redirect_to students_select_path
end
end
答案 0 :(得分:0)
我希望按钮说“选择”,然后发送该参数 pres.Title到我定义的功能。由于某种原因, 表格中的按钮显示的是pres.Title的值,而不是“选择”的值。
submit_tag(值=“保存更改”,选项= {})公共
<%= submit_tag "Choose", class: "btn", value: pres.Title %>
不会会生成带有文本 Choose 的提交按钮,因为您要覆盖的值为pres.Title
。您需要将其更改为
<%= submit_tag "Choose", class: "btn" %>
您可以使用hidden_field_tag
代替
<%= form_tag students_select_path do %>
<%= hidden_field_tag 'prestitle', pres.Title %>
<%= submit_tag "Choose", class: "btn" %>
<% end %>
最后,使用控制器中的params[:prestitle]
访问该值。
注意: 作为Rails约定之一,属性名称应为小写。我建议您在应用程序中关注它。