gpt4 book ai didi

javascript - 发送 'nil' 表示未选中的复选框 - UJS、Rails 4

转载 作者:行者123 更新时间:2023-12-03 08:54:46 24 4
gpt4 key购买 nike

我正在尝试在 HTML 表格中使用 check_box 表单标签来update_attributes 订单:

...
<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>
...

在 View 的最后,我正在加载 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

选中该框工作正常,并且 @ordershipped_and_delivered 属性已正确更新。但是,取消选中该复选框不会执行任何操作。如何确保取消选中该复选框会创建 AJAX 调用,以使用 nil 更新相应订单的 shipped_and_delivered 属性?

最佳答案

一如既往,我忽略了我的设计中最明显的问题。 Controller 操作是一招小马,它只会使用 Time.now 更新 shipped_or_delivered 属性。由于复选框的值为 1(表示 true)或 0(表示 false), Controller 操作需要同时适应这两种情况场景。所以代替:

def toggle_shipped_state
@order = Order.find(params[:order_id])
@order.update_attributes(shipped_or_delivered: Time.now)
end

我应该这样做:

def toggle_shipped_state
@order = Order.find(params[:order_id])
if params[:order][:shipped_or_delivered] == '0'
@order.update_attributes(shipped_or_delivered: nil)
else
@order.update_attributes(shipped_or_delivered: Time.now)
end
end

关于javascript - 发送 'nil' 表示未选中的复选框 - UJS、Rails 4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32555929/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com