Jon*_*anW 3 ruby ruby-on-rails ruby-on-rails-3
我来自php,我刚开始用红宝石和铁轨切割牙齿.
编写以下内容是否有更高效或更"红宝石"的方式?
<% if !@user.twitter_url.empty? %>
<a class="twitter" href="<%= @user.twitter_url %>">Twitter</a>
<% end %>
<% if !@user.facebook_url.empty? %>
<a class="facebook" href="<%= @user.facebook_url %>">Facebook</a>
<% end %>
<% if !@user.google_plus_url.empty? %>
<a class="googleplus" href="<%= @user.google_plus_url %>">Google Plus</a>
<% end %>
<% if !@user.linked_in_url.empty? %>
<a class="linkedin" href="<%= @user.google_plus_url %>">Linked In</a>
<% end %>
Run Code Online (Sandbox Code Playgroud)
Ism*_*reu 10
最好的方法应该是使用一些Presenter或者一个帮助方法.无论如何使用元编程你可以做到
<% [:twitter, :facebook, :google_plus, :linked_in].each do |social| %>
<% unless @user.send("#{social}_url").blank? %>
<a class="<%= social %>" href="<%= @user.send("#{social}_url") %>">social.to_s.titleize </a>
<% end %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
要么
<% [:twitter, :facebook, :google_plus, :linked_in].each do |social| %>
<%= link_to(social.to_s.titleize , @user.send("#{social}_url"), class: social) unless @user.send("#{social}_url").blank? %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
甚至:
<% [:twitter, :facebook, :google_plus, :linked_in].each do |social| %>
<%= link_to_unless @user.send("#{social}_url").blank?, social.to_s.titleize , @user.send("#{social}_url"), class: social %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
154 次 |
| 最近记录: |