2010-12-28 5 views
2

私のアプリケーションのレイアウトは、あなたが署名されているか否かに応じて、表示され、ログイン/ログアウトのリンクがあります。これは正常に動作しますが、本当にだらしないと冗長なようだアップTidyの.html.erb出力

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

。どのようにすれば%...%>大括弧なしで適切なlink_toを出力できますか?

+1

HAMLの宝石をお試しください。それはあなたを良くするでしょう。 :) http://haml-lang.com/ –

答えて

4

利用HAML;)

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

私が言ったように... :) –

+0

ああ!ハムルは即座に私にとって大きな魅力のように感じます。みんなありがとう。 *私は答えとして選択するまで指をタップする* – Rich

+0

そして覚えている!ハムルは鶏肉の山火事のようにレールの世界を掃除しており、誰もが最大のものを望んでいる。 –

5

私はHAMLで行くと思いますが、あなたはHAMLを使用しない場合、あなたはternary operatorを使用することができます。

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

必要があります= <%= ' – Jimmy

+0

確かに、ジミーに感謝します。 – Andrew

0

あなたが使用することができますコンカットヘルパー:(ActionView :: Helpers :: TextHelper)

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

<%を好む%>構文....

0

を増やしてみてください - そうのように、あなたの終了タグに(ダッシュ):から

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

http://www.plexusweb.com/staff/travis/blog/post/117/Rails-inline-ERb-effects-on-HTML-structure

編集。 私の悪い、あなたはこのようにそれを行うことができます2開閉ブラケット付き

0

ISは、HTML出力(改行など)を書式設定について思った:

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