2010-10-29 32 views
22

我使用flash [:error]向用户显示一条简单消息,指出他们在特定条件下无法执行删除操作。我也有一个链接,可以帮助他们获得有关他们想删除的实体的信息,以及为什么他们不能这样做。在Rails闪存邮件中使用HTML

建议在闪光消息中包含此超链接吗?这意味着我会在我的控制器中有一个HTML片段。如果不是,我会怎么做呢?

+5

如果已解释downvote,那会很好! *叹息* – 2010-12-09 14:06:07

回答

38

如果你想在从控制器的闪存中的链接有2个问题。生成链接,然后将其显示为HTML。

要使用控制器中的link_to helper,请完全限定它。

要让字符串显示为html(而不是转义),请在字符串上调用html_safe方法。因此,您的控制器中的线路可能如下所示:

flash[:error] = "You can't do that. #{ActionController::Base.helpers.link_to "Here's why.", '/more_info.html'}".html_safe 
+0

由于某种原因,当我在我的Flash信息中使用.html_safe时,他们不会在下次回复时提供 – 2013-06-18 20:06:24

+1

“下一次回合”是什么意思? Flash消息通常不会在随后的请求中呈现,这是它们的本质。 – Ritchie 2013-08-21 10:26:57

+0

从Rails 4.1开始,这不起作用。 – 0112 2014-10-23 22:35:03

0

你可以。您也可以在控制器中添加一些助手。

或者你可以通过i18n系统来完成。

11

flash对象是一个用于存储视图片段/消息的持有者,并使用该会话持久化它们以进行一次重定向。 我看到绝对没有问题存储链接,或更好的网址。

例如:

redirect_to posts_path, :alert => "You cannot do that", :flash => { :url => post_path(@post) } 

和布局来看,通常的嫌疑人:

- if flash[:alert] 
    ... 
    - if flash[:url] 
    = link_to "blah blah", flash[:url]