在我的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
如果您使用的是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 } }); });