Rails:在重定向到外部站点之前显示警报

时间:2014-09-25 16:43:54

标签: javascript ruby-on-rails

我想链接到外部网站,但在此之前,我想显示一个对话框,上面写着“您正在被重定向”。我尝试使用flash.now["alert"]但没有运气;我在第一次重定向并返回我的网站后才看到我的消息。

我的模板包含一个带有选择框的表单,根据选择的选项,访问者将被定向到网站上的另一个页面或外部网站。

在控制器中,有一个实例变量设置为存储在数据库中的值。根据该值,它将重定向到外部站点或内部页面。

如何在重定向到外部网站之前显示小型提醒?如果必须在javascript中完成,我怎样才能将实例变量的值传递给javascript?

2 个答案:

答案 0 :(得分:0)

这可以很容易地在没有javascript的情况下完成。

只需创建一个名为OffsiteLinks的模型,或者其他东西。该模型将具有外部URL。对象的显示路径将重定向到外部资源。这很不错,因为你不需要显示外部链接,担心重要的东西,你可以做一些事情,比如在重定向之前增加一个命中计数器。

如果你想显示真实的链接,那你几乎就是javascript。

实际上,对不起。我误读了你的部分问题。如果您需要消息,您将非常需要javascript来显示消息,或执行重定向...

对于没有js的用户,您可以在结果页面上显示“OK take me there link”来解决这个问题...

答案 1 :(得分:0)

滑轨' link_to帮助程序允许confirm: message选项执行您想要的操作。你想要做的是定义一个帮手:

def link_to_external(body, url)
  link_to body, url, :confirm => 'You are being redirected'
end

现在,您可以在模板中使用link_to_external代替link_to

link_to_external "Somewhere else", "http://example.com/"

如果您想花时间,可以让该助手更强大,以支持link_to的所有选项(并允许自定义确认消息)。

如果您只想创建一个这样的链接,可以使用link_to

link_to "Somewhere else", "http://example.com/", confirm: 'You are being redirected'

...如this answer中所述。