2011-06-23 43 views
4

現在我使用CarrierWave將照片上傳到我的網站。問題是,當我打開照片/上傳(upload.html.erb)告訴我這個錯誤:「載體類型爲NilClass:Class」的undefined方法`model_name「

undefined method `model_name' for NilClass:Class

圍繞我upload.html.erb線1:

<%= 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 %> 

我不「T真正理解這一點,因爲我覺得我的模型(photos.rb)還沒有得到錯誤:

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

在我photos_controller.rb我有這樣的:

class PhotosController < ApplicationController 
    def new 
    @photos = Photos.new(:gallery_id => params[:gallery_id]) 
    end 

    def create 
    @photos = Photos.new(params[:photos]) 
    if @photos.save 
     flash[:notice] = "Successfully created Photos." 
    else 
     render :action => 'new' 
    end 
    end 

    def edit 
    @photos = Photos.find(params[:id]) 
    end 
    def update 
    @photos = Photos.find(params[:id]) 
    if @photos.update_attributes(params[:photos]) 
     flash[:notice] = "Successfully updated Photos." 
    else 
     render :action => 'edit' 
    end 
    end 

    def destroy 
    @photos = Photos.find(params[:id]) 
    @photos.destroy 
    flash[:notice] = "Successfully destroyed Photos." 
    end 
end 

這我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

此外,您的模型被命名爲'照片',並且應該被命名爲'照片'。模型名稱在Rails中是常規的,這可能是它無法找到正確模型的原因。當我試圖尋找不一致時,它也會使一切變得更加混亂。嘗試改變這個並更新你的問題來匹配。 – Luke

+0

好眼Luke。至於字段,他已經正確定義了它們:attr_accessor:gallery_id,:name,:photo'。是的,模型需要單一。 –

1

該問題可以通過實例化對象照片對象來解決。我認爲應該解決這個問題。

+3

你能更具體嗎? – Joe

+0

請分享如何完成? –

1

我回答它遲在可以看到有在照片控制器與模板匹配upload.html.erb沒有上傳動作

我建議你重命名爲new.html.erb並嘗試訪問網址'照片/新'

相關問題