7

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

我有一个名为 Journals 的控制器。我想在 URL 中有一个可选的日期。如果用户没有指定日期,他们会得到今天。如果指定了日期,则使用它。URL 看起来像:

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

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

我从这条路线开始:

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

以及对应的Controller

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

这很好用,但是如何使用 url 助手生成 URL?我试过这个:

<%= 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

如果有更好的方法请告诉我。

4

1 回答 1

4

在路线中试试这个:

 resources :journals
 match '/journals/:id(/:date)' => 'journals#show', :constraints => { :date => /\d{4}-\d{2}-\d{2}/ }, :as => "journals_date"
于 2013-01-30T18:42:54.340 回答