Rails路由与查询参数

不太确定所涉及的术语,我没有发现任何搜索,但如果有人能指出我正确的方向,我会再看看。

我有一个名为Journals的控制器。 我想有一个日期可选的URL的一部分。 如果用户没有指定日期,他们今天就会得到。 如果有指定的日期,那就使用它。 网址如下所示:

localhost:3000/journals/7/
localhost:3000/journals/7/2013-01-22/

第一个将显示今日的内容。 第二个将显示1月22日的内容。

我从这条路线开始:

match '/journals/:id(/:date)', to: 'journals#show'

和一个相应的控制器

class JournalsController < ApplicationController
  def show
      @user = User.find(params[:id])
      if params[:date]
        @date = Date.parse(params[:date])
      else 
        @date = Date.today
      end
  end  
end

这工作正常,但我怎样才能使用网址助手生成网址? 我试过这个:

<%= link_to "< Yesterday", journal_path(id: @user, date: @date.yesterday) %>

这似乎实际上工作正常,但它给了我这样的网址:

localhost:3000/journals/7?date=2013-01-22

代替:

localhost:3000/journals/7/2013-01-22

我怎样才能保持这些URL一直构建像/ journals /:id /:date

如果有更好的方法,请让我知道。


试试这条路线:

 resources :journals
 match '/journals/:id(/:date)' => 'journals#show', :constraints => { :date => /d{4}-d{2}-d{2}/ }, :as => "journals_date"
链接地址: http://www.djcxy.com/p/68889.html

上一篇: Rails Routes With Query Parameters

下一篇: Why does 'in window' in for loop initialization cause syntax error?