我的路线配置如下:
get "calendar/:year/:month" => "calendar#month", as: :calendar_month
要为“下个月”和“上个月”创建链接,您需要在模板中使用这些链接:
<%= link_to "Next", calendar_month_path(year: @date.next_month.year, month: @date.next_month.month) %>
或者更简单:
<%= link_to "Previous", calendar_month_path(@date.prev_month.year, @date.prev_month.month) %>
两者都觉得有点冗长。
有没有办法利用@date.prev_month
/ @date.next_month
返回一个对象(Date
),该对象具有响应路由参数中定义的方法(:year
,:month
)?
类似于:
<%= link_to "Previous", calendar_month_path(@date.prev_month) %>
将是一个理想的解决方案,但它不起作用。
你如何处理类似情况?
感谢您的任何建议!
答案 0 :(得分:2)
您始终可以在帮助程序中添加方法,将日期转换为calendar_month_path
:
def path_for_date(d)
calendar_month_path(d.year, d.month)
end
这意味着您的链接是:
link_to("Previous", path_for_date(@date.prev_month)
link_to("Next", path_for_date(@date.next_month)
根据您的其他路线,您可能希望将它命名为比我更好但是您明白了。