一尘不染

Rails check_box_tag相邻检查时如何传递值

ajax

在我的Task模型的索引页面上,我想为与Task数据库表中的布尔字段“ complete”相对应的每一行显示一个复选框。

当前,我的代码进入方法“ Complete”,但其中不包含用户刚刚执行的复选框的值(即,如果他们只是选中了该框,则不会将其传递给我的“
Complete”方法)。

如何传递用户刚刚执行的值-选中还是未选中?

/views/tasks/index.html.erb

<% @tasks.each_with_index do |task, i| %>
    <tr>
        <td><%= check_box_tag 'Complete', task.complete, task.complete, :data => {:remote => true, :url => url_for( :action => 'complete', :id => task.id, :complete => task.complete ), :method => :put}, :class => 'input-large' %></td>
    </tr>
<% end %>

/ controllers / tasks_controller#complete

# PUT /complete/1
  def complete
    @task = Task.find(params[:id])
    p "inside complete"
    p "complete = #{params[:complete]}"
    @task.complete =

      if @task.update_attributes(params[:task])
        p "inside update"
        render :text => "success" 
      else
        p "inside error"
      end

  end

阅读 228

收藏
2020-07-26

共1个答案

一尘不染

如果您使用的是jQuery,则可以编写click事件。

$('.input-large').click(function() {
  var checked; 
  if ($(this).is(':checked')) {
    checked = true;
  } else {
    checked = false;
  } 
  $.ajax({
      type: "POST",
      url: "/tasks/complete",
      data: { id: $(this).data('post-id'), checked: checked }
   });     
});
2020-07-26