2011-06-23 18 views
4

今、私は自分のサイトに写真をアップロードするためにCarrierWaveを使用しています。"NilClassの未定義メソッド` model_name ':Class "CarrierWave

<%= form_for @photos, :html => {:multipart => true} do |f| %> 
    <%= f.error_messages %> 
    <%= f.hidden_field :gallery_id %> 
    <p> 
    <%= f.label :name %><br /> 
    <%= f.text_field :name %> 
    </p> 
    <p> 
    <%= f.file_field :photo %> 
    </p> 
    <p><%= f.submit %></p> 
<% end %> 

Iドン:私のupload.html.erbの1行目の周り

undefined method `model_name' for NilClass:Class

:問題は、私は写真/アップロード(upload.html.erb)を開いたときに私は、このエラーを示すことがあります

0123:私のphotos_controller.rbで

class Photos < ActiveRecord::Base 
    attr_accessor :gallery_id, :name, :photo 
    belongs_to :gallery 
    mount_uploader :photos, PhotosUploader 
end 

私はこれを持っている:私は私のモデル(photos.rb)が持っていないというエラーを思うので「がトンは本当に、これを理解します

そして、この私のphotos_uploader.rb:

class PhotosUploader < CarrierWave::Uploader::Base 
    include CarrierWave::RMagick 
    storage :file 
    def store_dir 
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 
    end 
    version :thumb do 
    process :scale => [180, 180] 
    end 
end 

よろしく、イバン・

+0

移行などのソートは正常ですか? –

+0

はい、私はマイグレーションを行いました。 – Ivanhercaz

答えて

3

問題は、あなたが:photosとしてアップローダーを搭載してきたという事実とは何かを持っている可能性がありますが、フォームフィールドがあります:photo。これらを一致させてみてください。

+0

はい、小さなエラーです。申し訳ありません。しかし、私が写真を:写真に変更すると、エラーは続きます。私は間違いを探し続けます。 – Ivanhercaz

+0

また、あなたのモデルは 'Photos'という名前で、本当に' Photo'という名前にする必要があります。モデル名はRailsでは慣習的に一意であり、正しいモデルを見つけることができない可能性があります。また、私が矛盾を探すときには、すべてを少し混乱させます。これを変更し、あなたの質問を更新して照合してみてください。 – Luke

+0

グッドアイルーク。フィールドに関しては、彼は正しく 'attr_accessor:gallery_id、:name、:photo'と定義されています。はい、モデルは単数である必要があります。 –

1

問題は、オブジェクト写真オブジェクトをインスタンス化することで修正できます。私はそれが問題を解決すべきだと思う。

+3

あなたはより具体的になることができますか? – Joe

+0

どうすればいいのか教えてください。 –

1

では、テンプレートupload.html.erb

と一致する写真のコントローラには、アップロードのアクションはありません見ることができるように私は私はあなたがnew.html.erbとアクセスしようとするその名前を変更することをお勧め後半にそれを答えるいますURL 'photos/new'

関連する問題