我有一个包含调用的应用程序。我希望能够取消呼叫并提供取消呼叫的原因。到目前为止,我已经在控制器中执行了取消操作,但是我想弄清楚如何扩展它,所以在将“取消”发布到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
我要么显示确认弹出窗口,要么取消原因,要么取消操作绑定到包含原因的小表单的其他视图。
答案 0 :(得分:0)
默认情况下,confirm
中的link_to
属性使用JavaScript window.confirm
,这是一个简单的是/否,返回true / false。
如果您想在同一页面上完成所有操作,则需要使用JavaScript和Ajax来完成此任务。在Cancel链接上添加事件处理程序的行,它将显示带下拉列表的模式。然后,此模式的结果将Ajax发送到Rails应用程序的POST请求。 There are a lot of jQuery Plugins您可以用它来帮助您在Rails中完成此任务。
第二个选项是您描述的在控制器中使用单独操作的选项。在UX方面,我认为第一个选择是更好的路线,并不像听起来那么可怕。