使用Rails5中的check_box将值传递给控制器​​操作

时间:2016-08-07 00:12:49

标签: ruby-on-rails checkbox ruby-on-rails-5

目前,一个按钮在点击时将对象的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|

但这不需要是异步的;如果页面刷新则没问题。

这可能吗?

2 个答案:

答案 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]进行操作