【问题标题】:Rails Cancel Confirmation ReasonRails 取消确认原因
【发布时间】:2012-09-26 18:44:53
【问题描述】:

我有一个应用程序,其中包含调用。我希望能够取消通话并提供取消通话的原因。到目前为止,我的取消操作在控制器中工作,但我试图弄清楚如何扩展它,以便在它发布“取消”到 call_status 字段之前,它还将根据下降填充 cancel_reason 字段下来。

这是我目前所拥有的:

查看代码: 取消按钮

<%= link_to 'Cancel', 
    cancel_call_path(call), 
    confirm: 'Are you sure you want to cancel the call?', 
    :method => :post, 
    :class => 'btn btn-danger btn-mini' %>


控制器代码:取消操作

def cancel
        @call = Call.find(params[:id])

        attrs = {
          call_status: 'cancel', 
          incharge_id: @call.units.first.incharge_id, 
          attendant_id: @call.units.first.attendant_id
        }
        attrs.merge!({ incharge2_id: @call.units.second.incharge_id, attendant2_id: @call.units.second.attendant_id }) if @call.units.count == 2

        if @call.update_attributes(attrs)
          @call.units.each do |unit|
             CallMailer.cancel_call(unit.incharge, @call).deliver
             CallMailer.cancel_call(unit.attendant, @call).deliver
           end
         redirect_to calls_url, :notice => "Call was successfully cancelled"
        else 
          redirect_to calls_url, :error => "Whoops."
        end
      end

我想要显示的确认弹出窗口,以及取消的原因,或者 取消操作 与带有小表单的不同视图相关联,其中包含一个原因。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 cancellation


    【解决方案1】:

    默认情况下,link_to 中的 confirm 属性使用 JavaScript window.confirm,这是一个返回 true/false 的简单 yes/no。

    如果您想在同一个页面上完成所有操作,您需要使用 JavaScript 和 Ajax 来完成此操作。类似于在 Cancel 链接上添加事件处理程序的内容,它将显示带有下拉菜单的模式。然后,此模式的结果将向 Rails 应用程序发送一个 POST 请求。 There are a lot of jQuery Plugins 可用于帮助您在 Rails 中完成此任务。

    第二个选项是您描述的选项,即在您的控制器中使用单独的操作。就用户体验而言,我认为第一种选择是更好的选择,而且并不像听起来那么可怕。

    【讨论】:

    • 我喜欢使用带有 JS/Ajax 的模式来处理这个问题。我只是不知道从哪里开始。我对 JS/Ajax 很陌生,而且我对 Rails 很熟悉。添加新动作似乎有点混水,我也希望从用户体验的角度来看事情。
    猜你喜欢
    • 2021-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-24
    相关资源
    最近更新 更多