我有一个包含各种标签的页面。在一个选项卡下是上传json文件的功能。此上传使用表单标记完成。
tab4.html.erb:
TimeZone.getAvailableIDs()
在提交表单标签时,我通过routes.rb资源和jquery调用控制器中的函数。
routes.rb中:
<%= form_tag({action: :add}, multipart: true, id: 'myform') do %>
<%= file_field_tag 'json_file' %>
<% end %>
<button id="upload-button">UPLOAD</button>
Jquery提交表单:
resources :controller do
collection do
post 'add'
end
end
controller.rb:
$('#upload-button').on('click', function () {
if ($('#json_file').val()) {
$('#myform').submit();
}
});
此函数将邮件正文中的json文件内容发送到另一个服务。
当这个帖子发生时,我想阻止用户在ruby on rails应用程序中切换他可用的其他选项卡?有没有办法实现这个目标?
我想在表单提交上使用ajax调用,用旋转器显示覆盖,然后调用控制器中的def add
file = params[:json_file]
file_content = file.read
json_content = JSON.parse(file_content, symbolize_names: true)
begin
// post call
redirect_to :some_other_page
rescue
// post call fails with exception
redirect_to // same page with a param to show failure
end
end
函数,直到完成阻止用户点击任何地方。
有没有更好的解决方案来实现这一目标?
答案 0 :(得分:0)
我使用@chumakoff建议解决了这个问题。我给了每个标签一个类,并且在提交时阻止了它们的叮当声。重新加载后,行为将恢复为默认状态。
$('#upload-button').on('click', function () {
if ($('#json_file').val()) {
preventNavigation();
$('#myform').submit();
}
});
function preventNavigation() {
$(".tab").on('click', function(){
alert("Please wait till the upload is complete");
return false;
});
}
这会导致用户在发布呼叫期间点击选项卡时收到提醒消息,从而阻止他导航。