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