为了能够在我的导航应用的主页上管理一些示例图片,我使用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