2013-01-04 42 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