2010-12-28 22 views
2

Meine Anwendung Layout hat ein Login/Logout-Link, der auf Displays je nachdem, ob Sie angemeldet sind oder nicht:Aufräumen .html.erb Ausgabe

<% if signed_in? %> 
    <%= link_to "Sign out", signout_path, :method => :delete %> 
<% else %> 
    <%= link_to "Sign in", signin_path %> 
<% end %> 

Dies funktioniert gut, aber es scheint wirklich unordentlich und ausführlich. Wie kann ich die entsprechende link_to ohne so viele <% ...%> Klammern ausgeben?

+1

die HAML gem Versuchen. Es wird dir gut tun. :) http://haml-lang.com/ –

Antwort

4

Verwendung HAML;)

- if signed_in? 
    = link_to "Sign out", signout_path, :method => :delete 
- else 
    = link_to "Sign in", signin_path 
+0

Wie ich schon sagte ... :) –

+0

Ah! Haml fühlt sich sofort wie eine gute Passform für mich. Danke Leute. * Tippe Finger, bis ich als Antwort wählen kann * – Rich

+0

Und denk dran! Haml fegt die Schienenwelt wie ein Lauffeuer aus Hühnern, und jeder will das größte Stück. –

5

ich mit HAML gehen würde, aber wenn Sie HAML nicht verwenden möchten, können Sie verwenden ein ternary operator:

<%= signed_in? ? link_to('Sign Out', signout_path, :method => :delete) : link_to('Sign In', signin_path) %> 
+1

Brauchen Sie ein = in dort '<% ​​=' – Jimmy

+0

Sicher tun, danke Jimmy. – Andrew

0

Sie könnten die Verwendung concat Helfer: (ActionView :: Helfer :: TextHelper)

<% 
if signed_in? 
    concat link_to("Sign out", signout_path, :method => :delete) 
else 
    concat link_to("Sign in", signin_path) 
end 
%> 

Obwohl in den Schienen api sie bevorzugt das <%%> Syntax ....

0

Mit 2 open-close Klammern Sie es wie folgt tun könnte:

<%= link_to("Sign out", signout_path, :method => :delete) if signed_in? %> 
<%= link_to("Sign in", signin_path) if !signed_in? %>