7

関連する用語がよくわからないので、検索しても何も見つかりませんでしたが、誰かが私を正しい方向に向けることができれば、もう一度調べます。

Journals というコントローラーがあります。オプションでURLの一部に日付を付けたいと思います。ユーザーが日付を指定しない場合、今日が表示されます。日付が指定されている場合は、それが使用されます。URL は次のようになります。

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

1 つ目は、今日の内容を表示します。2 つ目は、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

これは問題なく動作しますが、url ヘルパーを使用して URL を生成するにはどうすればよいですか? 私はこれを試しました:

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

これは実際にはうまくいくようですが、次のような URL が表示されます。

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

それ以外の:

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

/journals/:id/:date のように URL を一貫して構築するにはどうすればよいですか

より良いアプローチがあれば、私に知らせてください。

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 に答える