2010-10-29 37 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]