在我的控制器中,我有一个 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 调用。希望这对你有帮助