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

Rails: Display alert before redirecting to external site

本文关键字:显示 站点 重定向 外部 Rails      更新时间:2023-09-26

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

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

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

如何在重定向到外部网站之前显示小警报?如果这必须在javascript中完成,我如何将实例变量的值传递给javascript?

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

只需制作一个名为OffsiteLinks的模型,或者其他什么。该模型将具有外部url。对象的显示路径将重定向到外部资源。这很好,因为你不需要显示外部链接,也不需要担心rel-nowfollow之类的东西,而且你可以在重定向之前增加一个命中计数器。

如果你想显示真实的链接,你会被javascript卡住。

事实上,我很抱歉。我误解了你问题的一部分。如果您需要消息,您将非常需要javascript来显示消息或执行重定向。。。

你可以通过在结果页面上显示"OK take me there link"来解决这个问题,对于没有js的用户。。。

Rails的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'

如该回答中所述。