2012-12-30 25 views
1

我想創建一個名爲數據庫導入器的控制器。兩個字控制器名稱與軌道路線上的紅寶石故障

這是我跑:

rails generate controller database_importer index 

即生成:

class DatabaseImporterController < ApplicationController 
    def index 
    end 

    def import 
    # to do. 
    # Receive the uploaded CSV file and import to the database. 
    CSV.foreach("parse.csv") do |row| 

    end 
    end 
end 

當我訪問http://0.0.0.0:3000/database_importer/index我得到:

Routing Error 

No route matches {:action=>"import", :controller=>"database_importer"} 
Try running rake routes for more information on available routes. 

這裏是我的相關路線:

get 'database_importer/index' 

爲什麼路由引擎試圖將我推向導入操作方法?

當我嘗試改變路線,以反映實際控制人名稱(它沒有下劃線),我得到:

get 'databaseimporter/index' 

Routing Error 

uninitialized constant DatabaseimporterController 
Try running rake routes for more information on available routes. 

回答

2

你還定義了一個路線,如:

post 'database_importer/import' 

我認爲當Rails試圖爲表單生成路由時,表單動作是失敗的。

+0

不,我沒有添加任何路線。爲什麼這需要存在? – sergserg

+0

解決了這個問題...所以要清楚:我需要在我的控制器中有所有操作的路由才能工作?所有的行爲都是公開的方法? – sergserg

+0

您需要爲正在使用的操作定義路由。如果您手工生成HTML並構建一些虛構路線,而不是Rails不知道的渲染時間 - 當然點擊或表單帖子會失敗,因爲路徑不存在。但是,如果您使用Rails路由助手爲您生成表單動作,那麼路由必須存在,以便Rails可以生成適當的href/url等。 –