如何在一般视图中获取用户的照片

时间:2014-09-26 11:20:18

标签: ruby-on-rails controller instance

我正在尝试在每个视图中显示警告(我已将其放在application.html.erb中),只有当用户(current_user)尚未上传任何照片时才会显示。 / p>

问题是,我不知道如何放置我的控制器以检索user.photos并检查它是否为blank

在我看来

<% if @user.photos.blank? %>
  <div class="alert-header">
    <i class="icon-cog green"> </i> Todavía no has subido ningún spot  
    <button class="semi_margin_left smallbutton medium"> Sube uno </button>
  </div>
<% end %>

我试图加入pages controller

@user = current_user
@photos = @user.photos

注销时会出错。

问题是,如果我希望@ user.photos可以在所有应用中使用,我需要触摸什么控制器?警报将显示在整个应用程序中。

由于

1 个答案:

答案 0 :(得分:0)

将辅助方法添加到应用程序控制器:

# application_controller.rb
before_action :check_photos_alert

def check_photos_alert
   @show_photo_alert = @user && @user.photos.blank?
end

确保在调用此操作之前设置@user。然后在视图中,您可以检查是否设置了@show_photo_alert标志。

<% if @show_photo_alert %>
   <div class="alert-header">
     <i class="icon-cog green"> </i> Todavía no has subido ningún spot  
     <button class="semi_margin_left smallbutton medium"> Sube uno </button>
   </div>
<% end %>

需要注意的一点是:ApplicationController是大多数(如果不是全部)控制器的父类,因此对每个请求执行此检查可能太多了。如果是这种情况,请将此逻辑从ApplicationController移至模块,并将此模块包含在您需要进行此检查的每个控制器中。