爲了能夠在我的導航應用的主頁上管理一些示例圖片,我使用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'
再次感謝您的任何幫助。
Hi @Udaykumardas,你的意思是在'app/controllers/static_pages_controller.rb'中嗎? – CryptoPiggy
@Udaykumardas,啊,好吧,我想我明白了。所以基本上我只需要將上傳器的模型重命名(或複製)到static_pages.rb(對於rails 4,我認爲是蛇),對嗎? – CryptoPiggy
@Udaykumardas我想爲root創建的路徑已經被設置爲'static_pages#home',如上所示,但它不起作用,因爲即使創建'models/static_pages.rb'並添加了'mount_uploader:photo,PhotoUploader',它仍然沒有權限訪問控制器,所以它給出了一個「未定義的方法」,每個'nil:NilClass'錯誤。 – CryptoPiggy