Ruby on rails Rails取消确认原因
我有一个包含调用的应用程序。我希望能够取消通话,并提供取消通话的原因。到目前为止,我的取消操作在控制器中工作,但我正在尝试如何扩展它,以便在它将“取消”发布到Ruby on rails Rails取消确认原因,ruby-on-rails,ruby-on-rails-3,cancellation,Ruby On Rails,Ruby On Rails 3,Cancellation,我有一个包含调用的应用程序。我希望能够取消通话,并提供取消通话的原因。到目前为止,我的取消操作在控制器中工作,但我正在尝试如何扩展它,以便在它将“取消”发布到call\u status字段之前,它还将根据下拉列表填充cancel\u reason字段 以下是我目前掌握的情况: 查看代码:取消按钮 我希望显示带有取消原因的确认弹出窗口,或者使用包含原因的小表单将取消操作绑定到不同的视图。默认情况下,链接到的中的确认属性使用JavaScript窗口。确认是一个简单的是/否,返回真/假 如果你想在同一
call\u status
字段之前,它还将根据下拉列表填充cancel\u reason
字段
以下是我目前掌握的情况:
查看代码:取消按钮
我希望显示带有取消原因的确认弹出窗口,或者使用包含原因的小表单将取消操作绑定到不同的视图。默认情况下,
链接到的中的确认属性使用JavaScript窗口。确认是一个简单的是/否,返回真/假
如果你想在同一个页面上完成这一切,你需要使用JavaScript和Ajax来完成。类似于在Cancel链接上添加事件处理程序,该链接将显示带有下拉列表的模式。然后,此模式的结果将向Rails应用程序发出POST请求。您可以使用它来帮助您在Rails中实现这一点
第二个选项是您描述的,它将在控制器中使用单独的操作。就用户体验而言,我认为第一种选择是一种更好的方式,而且没有听起来那么可怕。我喜欢使用JS/Ajax模式来解决这个问题。我只是不知道从哪里开始。我对JS/Ajax非常陌生,对rails也很熟悉。添加一个新动作似乎有点让事情变得一团糟,我也希望从用户体验的角度来看待事情。
<%= 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