在 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 调用。希望对您有所帮助