Ruby on rails Carrierwave Gem:使用化身创建用户后,“无法将nil转换为字符串”

Ruby on rails Carrierwave Gem:使用化身创建用户后,“无法将nil转换为字符串”,ruby-on-rails,string,carrierwave,null,avatar,Ruby On Rails,String,Carrierwave,Null,Avatar,我会说,当我第一次启动carrierwave并运行时,除了阿凡达的大小缩放之外,一切都很好 所以现在在我尝试缩放之后,一切都糟透了。我卸载了gem,做了一次迁移以从用户中删除化身,然后做了另一次迁移以添加 还是一样的错误。注意,我正在做rails g上传者头像,而不是图像。除了添加内容外,我还没有接触到avatar_uploader.rb文件 require 'carrierwave/orm/activerecord' 在最上面一行 所以,真正奇怪的是: 当我进入控制台并执行User.last

我会说,当我第一次启动carrierwave并运行时,除了阿凡达的大小缩放之外,一切都很好

所以现在在我尝试缩放之后,一切都糟透了。我卸载了gem,做了一次迁移以从用户中删除化身,然后做了另一次迁移以添加

还是一样的错误。注意,我正在做rails g上传者头像,而不是图像。除了添加内容外,我还没有接触到avatar_uploader.rb文件

require 'carrierwave/orm/activerecord'
在最上面一行

所以,真正奇怪的是:

当我进入控制台并执行User.last时

1.9.3p0:001>User.last 用户加载0.3ms选择用户。*从用户按用户排序。id描述限制1 =>

这太奇怪了,因为用户数据库正在识别图像。那么…想法

如前所述,这最初并没有发生

在我的用户显示页面中,我有

<p>
   <label>My Avatar</label>
   <%= image_tag(@user.avatar_url) if @user.avatar? %>
   <%= f.file_field :avatar %>
   <%= f.hidden_field :avatar_cache %>
</p>
在我的用户表单中,我有:

<label>My Avatar</label>
    <%= f.file_field :avatar %>
    <%= f.hidden_field :avatar_cache %>
我附加了服务器窗口以向您显示正在发生的事情

Started GET "/users/17" for 127.0.0.1 at 2012-03-12 13:26:28 -0500
Processing by UsersController#show as HTML
  Parameters: {"id"=>"17"}
  User Load (0.2ms)  SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1   
[["id", "17"]]
  Rendered users/show.html.erb within layouts/application (1.9ms)
Completed 500 Internal Server Error in 5ms

ActionView::Template::Error (can't convert nil into String):
    7: 
    8: <p>
    9:    <label>My Avatar</label>
    10:    <%= image_tag(@user.avatar_url) if @user.avatar? %>
    11:    <%= f.file_field :avatar %>
    12:    <%= f.hidden_field :avatar_cache %>
    13:  </p>
  app/views/users/show.html.erb:10:in   
`_app_views_users_show_html_erb__498619941080127768_2168209880'
  app/controllers/users_controller.rb:18:in `show'

任何帮助都将不胜感激!谢谢:

不知道这是否有帮助;可能缺少您在控制器中正在执行的操作

你上传到:avatar,然后引用avatar\u url来检索它

我的是avatar.url.to_

<%= image_tag user.avatar.url.to_s, {:height => 30} %>

打开上载程序,确保您具有以下内容:

def root
  Rails.root.join 'public/'
end

def store_dir
  "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
这可能会解决问题