我正在尝试解决如何使用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了解更多信息。

10-07 21:27