重构我的代码,我怎么能在一个块中写这些行?

时间:2011-12-16 08:29:48

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1

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

是否可以在一个块内编写这些代码行? 任何人都可以发布快捷方式吗?太多&lt; %%&gt; ,&lt;%end%&gt;

2 个答案:

答案 0 :(得分: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 %>

答案 1 :(得分:3)

您的代码对于ERB来说非常正常。如果您想减少一些额外的格式化,可以使用HAML

- 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 imho是一个品味问题。