目前,一个按钮在点击时将对象的id
传递给控制器操作。
现在我想创建一个具有相同功能的复选框。
当前按钮代码:
<%= link_to "Display", note_display_path(:id => n.id), method: :post, class: 'btn btn-default' %>
尝试使用复选框代码:
<%= check_box n, note_display_path(:id => n.id), method: :post %>
这就是我现在正在尝试的,但点击时我没有在终端中看到任何活动。
它位于index
模板上,因此有很多对象被迭代并显示,@notes.each do |n|
。
但这不需要是异步的;如果页面刷新则没问题。
这可能吗?
答案 0 :(得分:0)
能够通过在form_for
循环中设置<% @notes.each do |n| %>
来部分解决。
然后隐藏提交按钮。
<%= form_for n, :url => { controller: :notes, action: :post_it, :id => n.id } do |f| %>
<td> <%= f.check_box :posted %> </td>
<td> <%= f.submit '', style: 'display:none' %> </td>
<% end %>
在我点击check_box
时可能无法提交的改进版本,但无需按Enter键。
答案 1 :(得分:0)
我会尝试使用一些JavaScript进行“ onclick”操作,
<%= check_box_tag(:name, :value, false, {onclick: "sendNotes(id='#{n.id}')"%>
<script>
function sendNotes(id) {
window.location.search += "note_id="+id;
}
</script>
然后您可以在控制器中使用params[:note_id]
进行操作