pdu*_*uey 81 routing ruby-on-rails rails-routing
我希望我的网址使用破折号-而不是下划线_作为单词分隔符.例如,controller/my-action而不是controller/my_action.
我对两件事感到惊讶:
-到_路由.或者是吗?我将使用的最佳解决方案:as或命名路线.
我的想法是修改Rails路由以检查该全局配置并在分派到控制器操作之前更改-为_.
有没有更好的办法?
san*_*rom 67
使用Rails 3及更高版本,您可以这样做:
resources :user_bundles, :path => '/user-bundles'
Run Code Online (Sandbox Code Playgroud)
另一种选择是通过初始化程序修改Rails.我不推荐这个,因为它可能在将来的版本中破坏.
使用:path如上所示更好.
# Using private APIs is not recommended and may break in future Rails versions.
# https://github.com/rails/rails/blob/4-1-stable/actionpack/lib/action_dispatch/routing/mapper.rb#L1012
#
# config/initializers/adjust-route-paths.rb
module ActionDispatch
module Routing
class Mapper
module Resources
class Resource
def path
@path.dasherize
end
end
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
您可以重载控制器和操作名称以使用破折号:
# config/routes.rb
resources :my_resources, path: 'my-resources' do
collection do
get 'my-method', to: :my_method
end
end
Run Code Online (Sandbox Code Playgroud)
您可以在控制台中测试:
rails routes -g my_resources
my_method_my_resources GET /my-resources/my-method(.:format) my_resources#my_method
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14583 次 |
| 最近记录: |