我正在尝试update_attributes
在HTML表格中使用check_box
表单标记的订单:
...
<td>
<%= form_for order, url: toggle_shipped_state_path(order.id), remote: true do |f| %>
<% if order.shipped_or_delivered.nil? %> #<= items that weren't shipped
<%= f.check_box :shipped_or_delivered, class: 'toggle-shipped' %>
<% else %>
<%= f.check_box :shipped_or_delivered, class: 'toggle-shipped', checked: true %>
<% end %>
<%= f.submit 'Shipped' %>
<% end %>
</td>
...
在我看来,我正在加载my-sales.js
,其中包含:
jQuery.fn.submitOnCheck = function() {
this.find('input[type=submit]').remove();
this.find('input[type=checkbox]').click(function() {
$(this).parent('form').submit();
$(this).closest('tr').toggleClass('success');
});
return this;
}
$('table').find('input[checked]').each(function(){
if ($(this).is(':checked')) {
$(this).closest('tr').addClass('success');
}
});
$('form.edit_order').submitOnCheck();
我的toggle_shipped_state
操作是:
def toggle_shipped_state
@order = Order.find(params[:order_id])
@order.update_attributes(shipped_or_delivered: Time.now)
end
选中此框可以正常工作,@order
的{{1}}属性会正确更新。但是,取消选中该复选框不会执行任何操作。如何确保取消选中该复选框会创建一个AJAX调用,以使用shipped_and_delivered
更新相应订单的shipped_and_delivered
属性?
答案 0 :(得分:1)
与往常一样,我忽略了我设计中最明显的问题。控制器操作是一个单一的小马,它只会用min-width: 400px;
更新shipped_or_delivered
属性。由于复选框的值为Time.now
的{{1}}或1
的{{1}},因此控制器操作需要适应这两种情况。所以而不是:
true
我应该做的:
0