根页面 - 未定义的方法`avatar'为零:NilClass

时间:2015-09-20 03:31:33

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

我试图在导航中的_header中插入头像。

当我尝试收到此错误时。

我收到此错误。

undefined method `avatar' for nil:NilClass

这与我的_header视图中的代码有关。

<%= image_tag @user.avatar.url(:large) %>

如何让头像显示?

2 个答案:

答案 0 :(得分:1)

您的@user变量为nil,只需在条件中包含此代码:

<% if @user.present? %>
  <%= image_tag @user.avatar.url %>
<% end %>

答案 1 :(得分:1)

根据您的问题,这就是解决问题的方法:

控制器/ application_controller.rb

class ApplicationController < ActionController::Base
  helper_method :current_user #make this method available in views

  def current_user
     # Use find_by_id to get nil instead of an error if user doesn't exist
     # you can change the session param based on your params
    @current_user ||= session[:current_user_id] && User.find_by_id(session[:current_user_id])
  end
end

在View中,您只需致电:

<%= current_user.avatar.url(:large) %>

如果您使用devise进行登录,则可以在application_controller.rb中使用make helper方法调用<%= current_user.avatar.url(:large) %>

我希望它可以帮到你