在 Ruby (2.2) on Rails 中,我如何弹出一个确认框然后重定向到另一个页面



在我的控制器中,我有一个 if 条件,如果满足,我希望弹出一个警报/确认框,然后当用户单击"确定"重定向到另一个页面时。

我试过了

flash[:alert] = 'Successfully checked in'
redirect_to check_in_path

但是,它只是跳过警报部分并直接进入重定向,而没有警报消息。

我的Ruby版本是Ruby 2.2.6p396,rails是5.0.1

任何帮助将不胜感激

你需要创建一个 js.erb 文件。然后,您可以使用现有的 rails 代码以及 js 警报框。Js.erb 文件允许您在同一文件中组合 rails 和 JavaScript 代码。如前所述,flash[:alert]不是一个警报框,alert是一个css类。

Rails 仅限于使用 HTML 响应 HTTP 请求。你描述的内容听起来更像是JavaScript alert。如果您尝试的内容(如果配置正确*(,则在呈现check_in_path页面时只会显示 Flash 警报。

*熟悉闪光灯的工作原理,导轨指南

您已正确设置控制器。我正确配置的唯一另一部分是,在您的视图中,您应该显示所述闪存消息:

<% flash.each do |name, msg| -%>
  <%= content_tag :div, msg, class: name %>
<% end -%>
通常

使用闪光灯的名称来设置其样式以使其意图明确;通常红色表示失败,绿色表示成功。

你可以这样做,如下所示

  render :update do |page|
    page << "alert('Successfully checked in')"
    page.redirect_to check_in_path
  end

但控制器中的部分渲染最常与 Ajax 调用一起使用。 因此,您可能必须从视图页面对您的操作进行 Ajax 调用。希望这对你有帮助

相关内容

最新更新