检查3件物品中是否有1件?

时间:2014-01-05 20:04:53

标签: ruby-on-rails validation ruby-on-rails-4

我有一个面板,用于显示用户的社交链接:

<div class="panel panel-default">
      <div class="panel-heading">
        <h3 class="panel-title">Follow me </h3>
      </div>
      <div class="panel-body profile_social_panel">
        <% if @user.facebook_link.present? %>
          <%= link_to image_tag('#'), @user.facebook_link %>
        <% end %>
        <% if @user.twitter_link.present? %>
          <%= link_to image_tag('#'), @user.twitter_link %>
        <% end %>
        <% if @user.youtube_link.present? %>
          <%= link_to image_tag('#'), @user.youtube_link %>
        <% end %>
      </div>
    </div>

我正在寻找一种检查AT LEAST是否存在一个链接的方法,以便我可以显示该面板。

1 个答案:

答案 0 :(得分:2)

选项1

这可以直接在视图层完成:

<% if @user.facebook_link.present? || @user.twitter_link.present? || @user.youtube_link.present? %>

选项2

或者,可以将此功能抽象到模型层中:

# app/models/user.rb
def link_present?
  if facebook_link.present? || twitter_link.present? || youtube_link.present?
    return true # Return true if true
  end
  false # Otherwise, return false
end

然后应用于视图:

# In your view
<% if @user.link_present? %>

Rails惯例将要求第二种方法更可取,因为它更符合DRY原则。