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/26
和明天的链接:http://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}) %>