在 Ruby (2.2) on Rails 如何弹出确认框然后重定向到另一个页面
In Ruby (2.2) on Rails How Do I Have A Confirmation Box Pop Up Then Redirect To Another Page
在我的控制器中,我有一个 if 条件,如果满足条件,我希望弹出一个 alert/confirmation 框,然后当用户单击 "ok" 重定向到另一个页面。
我试过了
flash[:alert] = 'Successfully checked in'
redirect_to check_in_path
但是它只是跳过警报部分并直接进入重定向而没有警报消息。
我的 Ruby 版本是 ruby 2.2.6p396,rails 是 5.0.1
如有任何帮助,我们将不胜感激
Rails仅限于响应HTML的HTTP请求。而且你描述的听起来更像是JavaScript alert
。如果配置正确*,您尝试的方法只会在 check_in_path 页面呈现时显示闪光警报。
* 熟悉闪光灯的工作原理,Rails Guides
您的控制器设置正确。我所说的正确配置的唯一另一部分是,在您的视图中,您应该显示所述快速消息:
<% flash.each do |name, msg| -%>
<%= content_tag :div, msg, class: name %>
<% end -%>
通常使用 flash 的名称来设置样式以使其意图明确;通常红色表示失败,绿色表示成功。
您需要创建一个 js.erb 文件。然后,您可以将现有的 rails 代码与 js 警告框一起使用。 Js.erb 文件让您可以将 rails 和 JavaScript 代码合并到同一个文件中。如前所述,flash[:alert] 不是警告框,警告框是 css class。
您可以按如下方式进行
render :update do |page|
page << "alert('Successfully checked in')"
page.redirect_to check_in_path
end
但控制器中的部分渲染最常与 Ajax 调用一起使用。因此您可能需要从您的视图页面对您的操作进行 ajax 调用。希望对您有所帮助
在我的控制器中,我有一个 if 条件,如果满足条件,我希望弹出一个 alert/confirmation 框,然后当用户单击 "ok" 重定向到另一个页面。
我试过了
flash[:alert] = 'Successfully checked in'
redirect_to check_in_path
但是它只是跳过警报部分并直接进入重定向而没有警报消息。
我的 Ruby 版本是 ruby 2.2.6p396,rails 是 5.0.1
如有任何帮助,我们将不胜感激
Rails仅限于响应HTML的HTTP请求。而且你描述的听起来更像是JavaScript alert
。如果配置正确*,您尝试的方法只会在 check_in_path 页面呈现时显示闪光警报。
* 熟悉闪光灯的工作原理,Rails Guides
您的控制器设置正确。我所说的正确配置的唯一另一部分是,在您的视图中,您应该显示所述快速消息:
<% flash.each do |name, msg| -%>
<%= content_tag :div, msg, class: name %>
<% end -%>
通常使用 flash 的名称来设置样式以使其意图明确;通常红色表示失败,绿色表示成功。
您需要创建一个 js.erb 文件。然后,您可以将现有的 rails 代码与 js 警告框一起使用。 Js.erb 文件让您可以将 rails 和 JavaScript 代码合并到同一个文件中。如前所述,flash[:alert] 不是警告框,警告框是 css class。
您可以按如下方式进行
render :update do |page|
page << "alert('Successfully checked in')"
page.redirect_to check_in_path
end
但控制器中的部分渲染最常与 Ajax 调用一起使用。因此您可能需要从您的视图页面对您的操作进行 ajax 调用。希望对您有所帮助