preserve :only & :except options on resources

This commit is contained in:
Jordan Brough 2010-12-10 13:51:59 -05:00
parent 56b03373a8
commit 0098452976
2 changed files with 15 additions and 2 deletions

View File

@ -275,14 +275,17 @@ module Rails
end
def to_route_code
# preserve :only & :except options
copied_options = @options.reject { |k,v| ![:only, :except].member?(k) }
copied_options_str = copied_options.empty? ? '' : ', ' + copied_options.inspect.gsub(/\A\{|\}\z/, '')
if !@children.empty? || @options.has_key?(:collection) || @options.has_key?(:member)
prefix = ["#{route_method} :#{@name} do"]
prefix = ["#{route_method} :#{@name}#{copied_options_str} do"]
lines = prefix + custom_methods + [@children.map {|r| r.to_route_code}.join("\n"), "end"]
indent_lines(lines)
else
base = "#{route_method} :%s"
base = "#{route_method} :%s#{copied_options_str}"
indent_lines [base % [@name]]
end
end

View File

@ -139,4 +139,14 @@ end
assert_equal new_routes_code, result
end
def test_preserves_resources_except_option
route = Rails::Upgrading::FakeResourceRoute.new("hats", :except => [:index])
assert_equal "resources :hats, :except=>[:index]", route.to_route_code
end
def test_preserves_resources_only_option
route = Rails::Upgrading::FakeResourceRoute.new("hats", :only => :show)
assert_equal "resources :hats, :only=>:show", route.to_route_code
end
end