我在控制器内有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],但是它什么也没有返回。是空白

javascript - 如何拒绝Rails更新方法并触发JavaScript警报框?-LMLPHP

但是新更新的pax值已成功保存在数据库中。

javascript - 如何拒绝Rails更新方法并触发JavaScript警报框?-LMLPHP

我尝试在模型中使用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");


我应该怎么做:


如果输入的pax0,则拒绝更新
如果输入的pax0,则触发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/

10-08 20:46