2015-06-13 87 views
0

爲了能夠在我的導航應用的主頁上管理一些示例圖片,我使用CarrierWave創建了一個圖片上傳器。CarrierWave的導軌圖片上傳器的控制器無法訪問'static_pages#home'

我遇到的問題是我的image_uploader的控制器無法訪問主頁root 'static_pages#home'。有沒有辦法讓我的(大部分)靜態'static_pages#home'可以訪問上傳器的控制器?

現在我唯一可以實現它的方法是將我的主頁索引從/app/views/static_pages/home.html.erb改爲/app/views/covers/index.html.erb並更改路線,但這似乎是一個糟糕的解決方法。

感謝您的任何幫助。

更新:

由於@Udaykumardas建議下面我創建了一個app/models/static_page.rb文件,其中包含

class Cover < ActiveRecord::Base 
    mount_uploader :photo, PhotoUploader # Tells rails to use this uploader for this model. 
end 

,但現在我得到以下錯誤:

NoMethodError in StaticPagesController#home
undefined method `each' for nil:NilClass

<% @covers.each do |cover| %>

這裏是我的路線信息的情況下,它可以幫助

get 'covers/index' 
    get 'covers/new' 
    get 'covers/create' 
    get 'covers/destroy' 

    get 'password_resets/new' 
    get 'password_resets/edit' 

    get 'account_activations/edit' 

    get 'sessions/new' 

    root    'static_pages#home' 
    get 'contact' => 'static_pages#contact' 
    get 'signup' => 'users#new' 
    get 'login' => 'sessions#new' 
    post 'login' => 'sessions#create' 
    delete 'logout' => 'sessions#destroy' 

    resources :users 
    resources :account_activations, only: [:edit] 
    resources :password_resets,  only: [:new, :create, :edit, :update] 
    resources :microposts,   only: [:create, :destroy] 

    resources :covers, only: [:index, :new, :create, :destroy] 

我不確定是否需要更改爲resources :static_pages, only: [:index, :new, :create, :destroy]底線。我已經嘗試過這種方式,並導致不同的錯誤,如下所示:

NameError in StaticPagesController#home
undefined local variable or method `new_cover_path'

再次感謝您的任何幫助。

+0

Hi @Udaykumardas,你的意思是在'app/controllers/static_pages_controller.rb'中嗎? – CryptoPiggy

+0

@Udaykumardas,啊,好吧,我想我明白了。所以基本上我只需要將上傳器的模型重命名(或複製)到static_pages.rb(對於rails 4,我認爲是蛇),對嗎? – CryptoPiggy

+0

@Udaykumardas我想爲root創建的路徑已經被設置爲'static_pages#home',如上所示,但它不起作用,因爲即使創建'models/static_pages.rb'並添加了'mount_uploader:photo,PhotoUploader',它仍然沒有權限訪問控制器,所以它給出了一個「未定義的方法」,每個'nil:NilClass'錯誤。 – CryptoPiggy

回答

0

StaticPage.rb文件中使用mount_uploader :image, ImageUploader

+0

我跟着你的建議,現在得到了一個不同的錯誤,我已經更新了我的問題的細節和更多的信息謝謝Uday :) – CryptoPiggy