我正在尝试解决如何使用rails获得自定义路由以执行日期查询。如果可能的话,我想打电话给这个报告。所以我在浏览器上访问我的路线并得到以下信息。
http://localhost:3000/trips/report
Couldn't find Trip with id=report
好像它想把报告读作身份证?我搞不清楚我哪里出了问题?在我的
routes.rb
文件中,我创建了以下条目。match 'trips/report' => 'trips#report'
我的trips控制器里有以下内容。
def report
@trips.all :condition => ["DATE(date) = DATE(?)", Time.now]
respond_to do |format|
format.html
format.json { render json: @trips }
end
end
我可能在做一些非常愚蠢的事情!希望有人能帮我走上正轨?
最佳答案
当然,您已经在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了解更多信息。