0

has_one Profile モデルを持つ標準の User モデルを使用して、単純なアプリを構築しています。プロファイル テーブルに画像属性の列が必要です。したがって、RailsCast #253 というタイトルの CarrierWave File Uploads に従いました。アップロードされた画像のサイズを変更しようとするまで、すべてうまくいっています。これには ImageMagick と RMagick のインストールが必要で、検索に 1 日かかりました。しかし、最終的には正しく、rmagick バージョン 2.13.2 のインストールに成功したと思います ("gem list" を実行して確認)。

しかし、それほど速くはありません...フォームをレンダリングして新しいプロファイルを作成しようとすると、次のエラーが発生します。

Profiles の NoMethodError#NilClass:Class の新しい未定義メソッド `model_name'

参考までに、ImageUploader の「include CarrierWave::RMagick」のコメントを外すまで、このフォームは正常に機能していました (画像のサイズ変更に RMagick メソッドを使用する場合は、これを行うことを想定しています)。

これを修正する方法について何か考えはありますか?

バージョン情報 (RailsInstaller for Windows を使用して起動および実行しました)

Rails 3.2.13
Ruby 1.9.3p392 [i386-minw32]
ImageMagick 6.8.5-Q16
rmagick 2.13.2

Gemfile

gem 'rmagick'
gem 'carrierwave'

モデル

class User < ActiveRecord::Base 
  has_one :profile

class Profile < ActiveRecord::Base
  attr_accessbile :image
  belongs_to :user
  mount_uploader :image, ImageUploader

画像アップローダ

class ImageUploader < CarrierWave::Uploader::Base

  include CarrierWave::RMagick

  storage :file

  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end
end

プロフィールコントローラー

def new
  @profile = current_user.build_profile
end

ビュー/プロファイル/new.html.erb

<%= form_for @profile, :html => {:multipart => true} do |f| %>

  <%= f.file_field :image %>

  <%= f.submit "Create my profile" %>

<% end %>
4

1 に答える 1