0

RoR初心者です。私のアプリは、日付を変数/year/month/dayに解析するコントローラーへのリクエストをルーティングしています。@date

ルート.rb:

match "/:year/:month/:day", to: 'posts#index', via: 'get', :constraints => { :year => /\d{4}/, :month => /\d{2}/, :day => /\d{2}/ }, :as => 'post_date'

コントローラ:

if(params.has_key?(:year) && params.has_key?(:month) && params.has_key?(:day))
  @date = params[:year] + "-" + params[:month] + "-" + params[:day]
else
  @date = Date.today
end

<%= link_to %>昨日と明日の日付にリンクできるタグの使い方がわかりません。たとえば、私がにアクセスしている場合、ビューに昨日と明日http://example.com/2013/08/27へのリンクを表示したいと思います。http://example.com/2013/08/26http://example.com/2013/08/28

ある時点ですべて壊れたいくつかの洗練されていないソリューションを試しました。これを達成するための良い方法は何でしょうか?

ありがとう!

解決

それは非常にエレガントではありませんが、うまくいった最終的な解決策は次のとおりです。

コントローラ:

def index
    if(params.has_key?(:year) && params.has_key?(:month) && params.has_key?(:day))
        @date = Date.new(params[:year].to_i, params[:month].to_i, params[:day].to_i)
    else
        @date = Date.today
    end

    # Generate variables for yesterday
    @y_year = @date.yesterday.strftime("%Y")
    @y_month = @date.yesterday.strftime("%m")
    @y_day = @date.yesterday.strftime("%d")

    @formatted_date = @date.to_time.strftime("%B %e, %Y")
    @featured = Post.where(feature_date: @date).to_a

意見:

<%= link_to "Yesterday", post_date_path({ year: @y_year, month: @y_month, day: @y_day}) %>
4

2 に答える 2

0

OPは、URLで渡された特定の日付の前日を望んでいると思いますが、

コントローラ

if(params.has_key?(:year) && params.has_key?(:month) && params.has_key?(:day))
  @date = Date.new(params[:year],params[:month],params[:day])
else
  @date = Date.today
end

意見

<%= link_to "Yesterday",'/#{@date.yesterday.year}/#{@date.yesterday.month}/#{@date.yesterday.day}' %>
于 2013-08-27T19:07:45.230 に答える