2013-03-24 13 views
5

Używam Devise.
Po pomyślnym zatwierdzeniu użytkownika pojawi się wiadomość flash.
Chciałbym dodać link do tego.Czy można potwierdzić dodanie linku do wiadomości flash?

Więc chcę tę wiadomość zamiast

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

Następnie część profile powinien być link do example.com/users/username/edit

Jak mogę zrobić to możliwe?

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. Mój zły :(Dzięki! – HUSTEN

+1

Przy okazji: Kiedy pracujesz bez urządzenia i masz kontrolerów, możesz użyć metody ['view_context'] (http://api.rubyonrails.org/classes/ActionView/Context.html) aby uzyskać dostęp do dowolnej metody widoku w swoich modelach lub kontrolerach, np .: 'view_context.link_to (" tekst linku ", ścieżka linku)' – weltschmerz

Odpowiedz

4

miałem kłopotów wykonawczych tych rozwiązań. Wszystko czego potrzebowałem to proste łącze HTML w pamięci flash. Oto jak zaimplementowałem go w Rails 4.1. Po prostu musiałem zdezynfekować moje wiadomości flash w app/views/shared/_flash.html.erb:

<% 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 %> 

I w moim kontrolera, po prostu wszedł HTML bezpośrednio i bez .html_safe. Działa jako uczta!

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

Można użyć metody view_context dostęp do dowolnej metody widok wewnątrz modeli i kontrolerów.

Na przykład:

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

Aktualizacja link_path odpowiednio.

+5

Kiedy użyłem tej metody, musiałem dołączyć .html_safe na końcu ciągu wiadomości. Bez tego znacznik kotwicy i jego zawartość były pokazane jako zwykły tekst na stronie. –

+0

Nie działa z Rails 5.0. Nawet z '.html_safe'. – the12

+0

Tak, to ciekawe ... Zastanawiam się, co się zmieniło. Kiedy wołam 'html_safe' na wiadomości flash * wewnątrz szablonu *, to działa. Takich jak '<% = notice.html_safe%>'. Zastanawiam się, dlaczego. – weltschmerz

0

można bezpośrednio dodać tag poprzez ciąg również

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

Z pewnością nie jest najczystszą rzeczą posiadanie znaczników html wewnątrz kontrolera. – weltschmerz

+0

Zwykle przekazuję ten rodzaj tekstu przez pliki yml, więc myślę, że jest to dopuszczalne ... – Raghuveer

Powiązane problemy