2014-09-25 89 views
-4

我想链接到外部网站,但在此之前,我想显示一个对话框,显示“您正在重定向”等内容。我尝试使用flash.now["alert"],但没有运气;我只是在重新定向并返回我的网站后才看到我的消息。Rails:在重定向到外部网站之前显示警报

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

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

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

+0

是的,这可以用javascript来完成,但你应该自己尝试一下,如果你不能,就到这里用代码提问。 – 2014-09-25 16:47:53

+0

我在问是否用javascript来完成,因为如果可能的话,我宁愿用ruby来做。 – dagarre 2014-09-25 16:52:51

+0

这应该是在客户端,所以我认为与'Ruby'没有机会。 – 2014-09-25 16:55:56

回答

0

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

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

如果你想显示真正的链接,你几乎坚持使用JavaScript。

其实,我很抱歉。我误解了你的问题的一部分。如果您需要消息,您几乎需要javascript来显示消息或执行重定向...

您可以通过在生成的页面上显示“确定带我去”链接来解决此问题,供用户使用没有js ...

0

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' 

...在this answer描述。

+0

要明确,[确认消息使用javascript](http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to)。 – 2014-09-25 18:05:16

+0

它的确如此。但是你不需要自己写JavaScript,这是我的观点。 OP没有说清楚他们是否有限制,不允许在应用中使用Javascript,或者他们只是不知道如何去做。 – pjmorse 2014-09-25 18:07:07

+0

是的,这在这种情况下不起作用,因为模板中实际上没有使用链接。这里有一个带有选择框的表单,在控制器中,根据所选的值,访问者将被导向到现场页面或外部站点。 – dagarre 2014-09-25 18:09:55