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

我可能正在做一些非常愚蠢的事情!希望有人可以帮助我走上正确的道路吗?

4

1 回答 1

3

您当然已经trips在您的 中声明了一个资源routes.rb,并且该资源生成的路由GET 'trips/:id'具有比后面定义的更高的优先级match 'trips/report'(Rails 使用第一个匹配规则)。如果是这种情况,请report像这样声明您的路线:

resources trips do 
  collection do
    get 'report'
  end
end 

查看Rails 路由指南中的这一章了解更多信息。

于 2013-01-04T17:30:13.037 回答