2010-09-02 84 views
1

我正在设置request.format =:MobileControl内的ApplicationController before_filter。Rails link_to不自动使用request.format作为链接中的扩展

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”是不是一个可行的解决方案。

有什么想法?

谢谢

+0

如果在帮助程序中指定格式不可行,如何设置它? – 2010-09-02 02:40:05

+0

(我编辑了我的文章)我是否需要指定link_to helper中的格式。我认为这是隐含的。 – nosretep 2010-09-02 02:51:38

+0

你有没有想过这个?我遇到了同样的问题。 – 2012-08-01 21:16:19

回答

0

,如果你想要的网址显示my_list.mobile您应该只需要指定在助手的格式。但是,如果您的过滤器不使用URL来确定格式,并且您正在设置控制器中的格式,为什么还需要在URL中使用它?当request.format被覆盖时,您的控制器应该在URL中响应.mobile格式。

您可能会在删除路由定义中的.:format部分时脱身,并仅依赖于正在设置的请求对象。

+0

示例设置只是为了显示其他人遇到问题的最低设置。 我正在使用will_paginate,它固有地(并正确地相信)使用.mobile扩展名(在上面的设置下)呈现分页链接。 我想知道如果我做错了什么,或者错过了什么,有效地阻止了“link_to”展示相同的行为。 – nosretep 2010-09-03 01:34:54