我在控制器内有update
方法:
def update
if @daily_order.update(daily_order_params.merge({default_order:false}))
respond_to :js
else
render :edit
end
end
我已经将
pax
作为daily_order_params
内部的参数之一,我现在想做的是,当用户尝试将零价(0
)更新为每日订单时,我想显示一个JS警报。 pax
值。我尝试在该
update
方法中使用byebug来检查params[:pax]
,但是它什么也没有返回。是空白但是新更新的
pax
值已成功保存在数据库中。我尝试在模型中使用
before_update
,但是我不知道如何前进。before_update :reject_zero_pax_order_update
def reject_zero_pax_order_update
# i got stucked here
end
update.js.erb
console.log("record updated");
我应该怎么做:
如果输入的
pax
是0
,则拒绝更新如果输入的
pax
是0
,则触发JS警报框在数据库中维护旧的
pax
最佳答案
:pax属性位于:daily_order哈希内,而不位于params哈希内。
您的参数看起来像这样:
{ daily_order: { pax: 0 }}
因此,您应该使用
params[:daily_order][:pax]
访问它您的操作应如下所示:
unless params[:daily_order][:pax] == 0
@daily_order.update(daily_params.merge{default_order: false} )
respond_to :js
else
render :edit
end
#update.js.erb
alert('hey, the pax cant be 0 ');
我假设,您希望仅当pax存在时才进行更新,否则显示警报。
关于javascript - 如何拒绝Rails更新方法并触发JavaScript警报框?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33866303/