2013-03-24 3 views
5

Ich benutze Devise.
Wenn der Benutzer bei der Bestätigung erfolgreich war, wird die Flash-Nachricht angezeigt.
Ich möchte einen Link hinzufügen.Ist es möglich, einen Link zur Flash-Nachricht hinzuzufügen, wenn es bestätigt ist?

Deshalb möchte ich diese Botschaft statt

Your account was successfully confirmed. You are now signed in. Go to your profile page, and edit it!

zu Dann sollte der Teil profile der Link sein example.com/users/username/edit

Wie kann ich es möglich machen?

devise.en.yml

confirmations: 
    confirmed: 'Your account was successfully confirmed. You are now signed in.' 
+0

http://stackoverflow.com/questions/4008059/rails-devise-customize-flash-message-devise-en-yml-with-a-link-to?rq=1 –

+0

@NickGinanto Ahhhh. Mein schlechtes :(Danke !! – HUSTEN

+1

Übrigens: Wenn du ohne Devise arbeitest und Controller hast, kannst du die Methode ['view_context'] (http://api.rubyonrails.org/classes/ActionView/Context.html) verwenden Greifen Sie auf eine beliebige Ansichtsmethode in Ihren Modellen oder Controllern zu Beispiel: 'view_context.link_to (" link text ", link_path)' – weltschmerz

Antwort

4

Ich hatte Probleme der Umsetzung dieser Lösungen hinzufügen. Alles, was ich brauchte, war ein einfacher HTML-Link im Flash. So habe ich es in Rails 4.1 implementiert. Ich hatte gerade meine Flash-Mitteilungen in app/views/shared/_flash.html.erb zu sanieren:

<% flash.each do |name, msg| %> 
    <div class="alert alert-<%= name %>"> 
    <a class="close" data-dismiss="alert">&#215</a> 
    <% if msg.is_a?(String) %> 
     <div id="flash_<%= name %>"> <%= sanitize(msg) %> </div> 
    <% end %> 
    </div> 
<% end %> 

Und in meinem Controller, ich nur HTML-Code direkt eingegeben und ohne .html_safe. Funktioniert gut!

flash[:notice] = %Q[Please <a href="#">click here</a>] 
11

können Sie die Methode verwenden view_context jede Ansicht Methode innerhalb Ihrer Modelle und Controller zuzugreifen.

Zum Beispiel:

def index 
    flash[:notice] = "Go to your #{view_context.link_to("profile page", link_path)}, and edit it!" 
    redirect_to link_path 
end 

aktualisieren link_path entsprechend.

+5

Wenn ich diese Methode verwendete, musste ich .html_safe am Ende der Nachrichtenzeichenfolge anhängen. Ohne dies wurden das Anker-Tag und sein Inhalt als einfacher Text auf der Seite angezeigt. –

+0

Funktioniert nicht mit Rails 5.0. Sogar mit '.html_safe'. – the12

+0

Ja, das ist interessant ... Ich frage mich, was sich geändert hat. Wenn ich 'html_safe' auf der Flash-Nachricht * in der Vorlage * anrufe, funktioniert es. Zum Beispiel '<% = notice.html_safe%>'. Ich frage mich, warum. – weltschmerz

0

Sie können direkt mit dem einen Tag über Zeichenfolge auch

def index 
    flash[:notice] = "Go to your <a href='#{link_path}'>LINK TEXT</a> and edit it!" 
end 
+0

Es ist sicher nicht die sauberste Sache, HTML-Tags in Ihrem Controller zu haben. – weltschmerz

+0

normalerweise übergebe ich diese Art von Text über XML-Dateien, also ich denke, es ist akzeptabel ... – Raghuveer