2016-04-15 58 views
0

我只想在頁面上顯示facebook url,twitter url。表中鏈接了大約40個網址,用於不同的社交網絡。如何快速從列表中選擇對應於數組元素的項目

我的代碼:

<ul class="icons-bar icons-bar_socials icons-bar_socials_profile"> 
<% @freelancer.links.each do |link| %> 
    <% if link.messenger_type.title == "facebook" %>  
     <li class="icons-bar__item"> 
     <%= link_to link.url, link.url, class: "icons-bar__icon icon_faceebook" %> 
    </li> 
    <% end %> 
    <% if link.messenger_type.title == "twitter" %>  
     <li class="icons-bar__item"> 
     <%= link_to link.url, link.url, class: "icons-bar__icon icon_twitter" %> 
    </li> 
    <% end %> 
</ul> 

list.rb

# == Schema Information 
# 
# Table name: links 
# 
# id    :integer   not null, primary key 
# url    :string 
# freelancer_id  :integer 
# messenger_type_id :integer 
# 
# Indexes 
# 
# index_links_on_freelancer_id  (freelancer_id) 
# index_links_on_messenger_type_id (messenger_type_id) 
# 

class Link < ApplicationRecord 
    belongs_to :freelancer 
    belongs_to :messenger_type 

end 

messenger_type.rb

# == Schema Information 
# 
# Table name: messenger_types 
# 
# id   :integer   not null, primary key 
# title  :string 
# created_at :datetime   not null 
# updated_at :datetime   not null 
# 

class MessengerType < ApplicationRecord 
    has_many :links 
end 

我不喜歡這樣的方式。用什麼來實現這個任務更優雅的方式

回答

1

我覺得這是比較明確的,也刪除不必要的條件。

如果你願意,你也可以把它放進一個幫手。

<ul class="icons-bar icons-bar_socials icons-bar_socials_profile"> 
    <% @freelancer.links.select{|link| ["twitter", "facebook"].include? link.messager_type.title }.each do |link| %>  
     <li class="icons-bar__item"> 
     <%= link_to link.url, link.url, class: "icons-bar__icon icon_#{link.messager_type.title}" %> 
     </li> 
    <%end%>   
</ul> 
2

這將是更優雅:

<ul class="icons-bar icons-bar_socials icons-bar_socials_profile"> 
<% if ['twitter', 'facebook'].include? link.messenger_type.title %>  
     <li class="icons-bar__item"> 
     <%= link_to link.url, link.url, class: "icons-bar__icon icon_#{link.messenger_type.title.downcase}" %> 
    </li> 
    <% end %> 
</ul> 

編輯:當然應該補充UL標記的