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

Javascript Rails:在重定向到外部站点之前显示警报,javascript,ruby-on-rails,Javascript,Ruby On Rails,我想链接到一个外部站点,但在此之前,我想显示一个对话框,上面写着“你被重定向了”。我试着用flash。现在[“提醒”]来做这个,但是运气不好;我只是在第一次重定向并返回到我的站点后才看到我的消息 我的模板包含一个带有选择框的表单,根据选择的选项,访问者将被引导到网站上的另一个页面或外部网站 在控制器中,有一个实例变量设置为存储在数据库中的值。根据该值,它将重定向到外部站点或内部页面 如何在重定向到外部站点之前显示小警报?如果这必须在javascript中完成,那么如何将实例变量的值传递给java

我想链接到一个外部站点,但在此之前,我想显示一个对话框,上面写着“你被重定向了”。我试着用flash。现在[“提醒”]来做这个,但是运气不好;我只是在第一次重定向并返回到我的站点后才看到我的消息

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

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


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

这可以在没有javascript的情况下轻松完成

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

如果你想显示真正的链接,你就必须使用javascript

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


您可以通过在结果页面上显示“OK take me there link”(确定带我去那里链接)来解决这个问题,对于没有js的用户…

Rails'
link\u to
helper允许一个
confirm:message
选项,它满足您的需要。您要做的是定义一个助手:

def link_to_external(body, url)
  link_to body, url, :confirm => 'You are being redirected'
end
现在,您可以在模板中使用
link\u to\u external
而不是
link\u to

link_to_external "Somewhere else", "http://example.com/"
如果您愿意花时间,您可以使该助手更加健壮,以支持所有选项
link_to
(并允许自定义确认消息)

如果您只想创建一个这样的链接,您可以使用
link\u to

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

…如中所述。

是的,这可以通过javascript实现,但您应该自己尝试,如果不行,请过来用代码提问。我想问的是,是否必须通过javascript实现,因为如果可能的话,我宁愿用ruby来实现。这应该是客户端的,因此,我认为使用Ruby是不可能的。它是通过Javascript实现的,但是Rails中有一个助手为您提供JS。是的,Ruby是一个机会,“flash散列”只用于向用户的下一个请求添加内容——正如您所发现的,它在客户端没有多大帮助。你可能想了解一下它是如何被使用的。只是想说清楚,它确实是。但是你不需要自己编写javascript,这就是我的观点。OP没有明确说明他们是否有限制阻止在应用程序中使用Javascript,或者他们只是不知道怎么做。是的,这在这种情况下不起作用,因为模板中实际上没有使用链接。有一个带有选择框的表单,在控制器中,根据选择的值,访问者将被引导到现场页面或外部站点。@dagarre那么是的,你运气不好。当用户单击按钮提交表单时,您最后一次与用户交互。您需要定制JS来检查表单的内容,并决定是否显示警告。