2013-03-24 13 views
5

Devise'yi kullanıyorum.
Kullanıcı doğrulamada başarılı olduğunda, flaş mesajı görüntülenir.
Bunun için bir bağlantı eklemek istiyorum. Onaylandığında flaş mesaja bağlantı eklenebiliyor mu?

yüzden yerine

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

Sonra profile parçası Bunun mümkün hale nasıl example.com/users/username/edit

link olmalıdır bu mesajı istiyor?

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. Benim kötü :(Teşekkür ederim! – HUSTEN

+1

Bu arada: Kontrol olmadan çalışan ve denetleyicileriniz varsa ['view_context'] yöntemini kullanabilirsiniz (http://api.rubyonrails.org/classes/ActionView/Context.html) Modellerinizin veya denetleyicilerinizin herhangi bir görünüm yöntemine erişin Örn: 'view_context.link_to (" bağlantı metni ", link_path)" – weltschmerz

cevap

4

sorun bu çözümleri hayata vardı dizesi yoluyla bir etiket ekleyebilirsiniz. Tek ihtiyacım olan flaşta basit bir HTML bağlantısıydı. Rails 4.1'de bunu nasıl uyguladım.

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

Ve benim denetleyicisi, sadece doğrudan ve .html_safe olmadan HTML girdi: Sadece app/views/paylaşılan/_flash.html.erb benim flaş mesajları siyaseti vardı. Bir tedavi!

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

Sen modelleri ve denetleyicileri içindeki herhangi görünüm yöntemini erişmek için yöntem view_context kullanabilirsiniz. Örneğin

:

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

Güncelleme link_path buna göre.

+5

Bu yöntemi kullandığımda, ileti dizesinin sonunda .html_safe eklemek zorunda kaldım. Bu olmadan, bağlantı etiketi ve içeriği sayfada düz metin olarak gösterildi. –

+0

Rails 5.0 ile çalışmıyor. .html_safe ile bile. – the12

+0

Evet, bu ilginç ... Neyin değiştiğini merak ediyorum. Şablondaki * flaş mesajında ​​* html_safe 'dediğimde çalışır. Gibi <% = notice.html_safe%>. Merak ediyorum neden olsa. – weltschmerz

0

doğrudan da

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

Denetleyicinizin içinde html etiketlerinin olması en temiz şey değildir. – weltschmerz

+0

normalde bu tür bir metni yml dosyaları ile geçiriyorum, bu yüzden kabul edilebilir olduğunu düşünüyorum ... – Raghuveer

İlgili konular