我正在尝试在每个视图中显示警告(我已将其放在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可以在所有应用中使用,我需要触摸什么控制器?警报将显示在整个应用程序中。
由于
答案 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移至模块,并将此模块包含在您需要进行此检查的每个控制器中。