Rails + CarrierWave:NoMethodError:nil的未定义方法`image_url':NilClass

时间:2013-10-25 20:28:12

标签: ruby-on-rails carrierwave

我正在使用Devise和Carrierwave。我使用devise生成了用户,然后创建了一个单独的用户控制器,此页面现在是(用户/搜索)

Carrierwave工作得非常好,并在我的节目中显示图像(用户/ 1等)但是当我把事情移到新的“搜索”页面时,它已经坏了。

这是我视图中的代码..(注意,当我删除图像时视图有效,所以其他代码也没问题)

<% @males.each do |user| %>
  <%= image_tag @user.image_url(:thumb).to_s %>
  <%= user.firstname %>
<% end %>

我已尝试添加我的users_controller:

def search
  @users = User.all
end

正如您可以通过我的视图中的代码告诉我我按性别过滤用户(我已经定义了@males和@females)您可以在我的模型中看到它。

class User < ActiveRecord::Base

  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable

  attr_accessible :email, :password, :password_confirmation, :remember_me, :username, :firstname, :lastname, :gender, :image, :remote_image_url, :image_cache, :remove_image

  mount_uploader :image, ImageUploader

  scope :male, -> { where gender: 'male' }
  scope :female, -> { where gender: 'female' }

我尝试将:image_url添加到attr_accessible和mount_uploader并且它不起作用,但我知道这不会是问题,因为我说它在节目中工作正常。

任何想法??

注意:我已在此处检查了所有相关问题,但仍然无法找到有助于我的解决方案。非常感谢

1 个答案:

答案 0 :(得分:2)

<% @males.each do |user| %>
  <%= image_tag @user.image_url(:thumb).to_s %>
  <%= user.firstname %>
<% end %>

我认为你有一个额外的@符号。试试<%= image_tag user.image_url(:thumb).to_s %>