2011-12-16 8 views
0
<% if user_signed_in? %> 
    <li><%= link_to('Logout', destroy_user_session_path, :method => :delete) %> </li> 
    <li><%= link_to('Edit registration', edit_user_registration_path) %> </li> 
    <li><%= link_to 'Add Post', :controller=>'/posts', :action=>'new' %></li> 
<% else %> 
    <li><%= link_to('Login', new_user_session_path) %></li> 
<% end %> 

それは一つのブロック内のコードのこれらの行を記述することは可能ですか? 誰でもショートカット方法を投稿できますか?多すぎる<%の%>、<%の終わりのようにそれをやってと間違って何%>私のコードをリファクタリングして、これらの行を1ブロックでどのように書くことができますか?

+1

IAMは混乱しましたか? – djd

+0

編集は、今より少ない<% .. %> – shibly

答えて

6

<% if user_signed_in? %> 
    <li><%= link_to('Logout', destroy_user_session_path, :method => :delete) %>  </li> 
    <li><%= link_to('Edit registration', edit_user_registration_path) %> </li> 
    <li><%= link_to 'Add Post', :controller=>'/posts', :action=>'new' %></li> 
<% else %> 
    <li><%= link_to('Login', new_user_session_path)  %></li> 
<% end %> 
+0

[OK]を、それを短くする、しかし、<% end %><% %>を軽減する方法はありますか? – shibly

+0

Rubyは私のものではありませんが、このテンプレートが他のすべてのシステムと同じように動作すれば、これをさらに簡素化する方法はありません。 –

+3

'end'行を取り除き、テンプレートを少し冗長にしたい場合は、HAMLを使ってみてください。 – cmpolis

3

あなたのコードはERBではかなり正常です。

- if user_signed_in? 
    %li= link_to('Logout', destroy_user_session_path, :method => :delete) 
    %li= link_to('Edit registration', edit_user_registration_path) 
    %li= link_to 'Add Post', :controller=>'/posts', :action=>'new' 
- else 
    %li= link_to('Login', new_user_session_path) 

を使用するかではないHAMLの私見は好みの問題です:あなたはいくつかの余分な整形を削減したい場合は、HAMLを使用することができます。あなたは2 if文を追加した理由

関連する問題