【问题标题】:Pass value to controller action with check_box in Rails5在 Rails 5 中使用复选框将值传递给控制器​​操作
【发布时间】:2018-12-12 03:59:20
【问题描述】:

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

但这不需要是异步的;页面刷新就OK了。

这可能吗?

【问题讨论】:

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


    【解决方案1】:

    通过在&lt;% @notes.each do |n| %&gt; 循环中设置form_for 能够部分解决。

    然后隐藏提交按钮。

    <%= 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 时提交,而无需按回车键。

    【讨论】:

      【解决方案2】:

      我会尝试使用一些 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] 做一些事情

      【讨论】:

        猜你喜欢
        • 2013-09-22
        • 1970-01-01
        • 2018-12-15
        • 2016-01-31
        • 1970-01-01
        • 1970-01-01
        • 2021-12-16
        • 2015-05-29
        • 1970-01-01
        相关资源
        最近更新 更多