是否可以从我的资源的路由中删除(。:format)? rails2.3

时间:2011-10-16 02:18:08

标签: ruby-on-rails routing

如果我在routes.rb中执行map.resources :users,那么我获得的路由(。:format)在每个路由的末尾(rake路由)。

如何在rails 2.3中摆脱这种情况?

我非常肯定在3.1.1中我可以做类似的事情:format => false。这可以在2.3中找到吗?我可以做模仿的猴子补丁:format => false?

感谢。

1 个答案:

答案 0 :(得分:1)

猴子打了补丁。等等。我真的,真的想要改变默认行为,但考虑到潜在的未来开发者的敏感性。

map.resource(s) ..., :format=>false现在不包含路线中的格式

配置/初始化/ resources.rb:

module ActionController
  module Resources
    private
      def map_resource_routes(map, resource, action, route_path, route_name = nil, method = nil, resource_options = {} )
        if resource.has_action?(action)
          action_options = action_options_for(action, resource, method, resource_options)
          formatted_route_path = (resource.options[:format] == false ? route_path : "#{route_path}.:format")

          if route_name && @set.named_routes[route_name.to_sym].nil?
            map.named_route(route_name, formatted_route_path, action_options)
          else
            map.connect(formatted_route_path, action_options)
          end
        end
      end
  end
end

我所做的改变是:

formatted_route_path = (resource.options[:format] == false ? route_path : "#{route_path}.:format")

以前只是formatted_route_path = "#{route_path}.:format"

为了让它适用于所有路线,在routes.rb中,我只是用map.with_options :format=>false do |map| ... end包裹所有路线