建立网址的更好方法

时间:2015-04-24 19:29:44

标签: ruby-on-rails ruby rails-routing

我的路线配置如下:

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

将是一个理想的解决方案,但它不起作用。

你如何处理类似情况?

感谢您的任何建议!

1 个答案:

答案 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)

根据您的其他路线,您可能希望将它命名为比我更好但是您明白了。