1

我在 ApplicationController before_filter 中设置 request.format = :mobile。

before_filter :some_filter
def some_filter
   request.format = :mobile
end

我在路线中有这个映射:

map.my_list '/my_list.:format', :controller => "of_no", :action => "significance"

当我执行以下操作时:

<%= link_to "My List", my_list_path %>

我得到以下信息(实际如下):

<a href="/my_list">My List</a> <!-- THIS IS THE PROBLEM -->

我希望这是(预期如下):

<a href="/my_list.mobile">My List</a> <!-- THIS IS THE EXPECTED -->

但是,如果我执行以下操作:

<%= link_to "My List", my_list_path(:format => "mobile") %> 

然后我得到了预期的结果,但是对每个“link_to”都这样做不是一个可行的解决方案。

任何想法?

谢谢

4

1 回答 1

0

如果您希望 URL 显示 my_list.mobile,则只需在帮助程序中指定格式。但是,如果您的过滤器不使用 URL 来确定格式,并且您在控制器中设置格式,为什么还要在 URL 中使用它呢?当 request.format 被覆盖时,您的控制器应该响应 URL 中没有它的 .mobile 格式。

您可能会通过删除.:format路由定义的一部分而侥幸逃脱,而只依赖于设置的请求对象。

于 2010-09-02T12:16:02.013 回答