2015-06-13 29 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