在Rails Flash消息中使用HTML

Vij*_*Dev 22 ruby-on-rails

我使用flash [:error]向用户显示一条简单的消息,告知他们在某些条件下无法执行删除操作.我还有一个链接,可以帮助他们获取有关他们想要删除的实体的信息以及他们不能这样做的原因.

是否可以在Flash消息中包含此超链接?这意味着我的控制器中会有一个HTML片段.如果没有,我该怎么做呢?

Rit*_*hie 38

如果要在控制器的flash消息中包含链接,则有2个问题.生成链接,然后将其显示为HTML.

要在控制器中使用link_to帮助程序,请完全限定它.

要使字符串显示为html(而不是被转义),请在字符串上调用html_safe方法.所以控制器中的行可能如下所示:

flash[:error] = "You can't do that. #{ActionController::Base.helpers.link_to "Here's why.", '/more_info.html'}".html_safe
Run Code Online (Sandbox Code Playgroud)


Nic*_*nco 11

flash对象是用于存储视图片段/消息的持有者,并使用该会话将它们保留为一个重定向.我认为存储链接或更好的URL绝对没有问题.

例如:

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

在布局视图中,通常的嫌疑人:

- if flash[:alert]
  ...
  - if flash[:url]
    = link_to "blah blah", flash[:url]
Run Code Online (Sandbox Code Playgroud)