2013-01-04 50 views
2

我想解決如何獲得自定義路由與rails一起使用來執行日期查詢。如果可能,我想打電話給這份報告。所以我在瀏覽器上訪問我的路線並獲得以下內容。路由與自定義視圖

http://localhost:3000/trips/report 

Couldn't find Trip with id=report 

像它試圖在報告的ID讀?我無法弄清楚我在這裏出了什麼問題?在我的routes.rb文件中,我創建了以下條目。

match 'trips/report' => 'trips#report' 

以下是我的出行控制器。

def report 
    @trips.all :condition => ["DATE(date) = DATE(?)", Time.now] 

    respond_to do |format| 
    format.html 
    format.json { render json: @trips } 
    end 
end 

我可能做一些很無聊的!希望有人能幫助我走正確的道路?

回答

3

你肯定已經宣佈trips資源在routes.rb,並通過資源產生的路線GET 'trips/:id'具有更高的優先級再後來定義的match 'trips/report'(Rails使用第一個匹配的規則)。如果是這種情況,聲明你report路線是這樣的:

resources trips do 
    collection do 
    get 'report' 
    end 
end 

this chapter in Rails Routing Guide以獲取更多信息。

+0

感謝您回覆Baldrick!我已經做了這個改變並檢出了文檔,它運行正常,但我似乎仍然有同樣的問題?我是否需要在我的資源之前放置這條路線:自行車旅行? – calabi

+0

@davessh我的答案中的代碼應該替換'resources trips'和'match'trips/report'=>'trips#report''。如果您處於開發環境中,則不需要重新啓動服務器。如果它不起作用,請在您的問題中發佈完整的'routes.rb',以及請求生成的完整控制檯日誌。 – Baldrick

+0

完美無瑕!多謝,夥計! – calabi