90

URLで、単語の区切り文字として-アンダースコアではなくダッシュを使用するようにします。_たとえば、controller/my-actionの代わりにcontroller/my_action

私は2つのことに驚いています:

  1. グーグル等。それらを区別し続けます。
  2. そのRubyonRailsには、ルーティングでマップ-するための単純なグローバル構成パラメーターがありません。_それともそうですか?

私が持っている最善の解決策は、:asまたは名前付きルートを使用することです。

私の考えは、Railsルーティングを変更して、そのグローバル構成をチェックし、コントローラーアクションにディスパッチする前にに変更-することです。_

もっと良い方法はありますか?

4

4 に答える 4

81

Rails 3以降では、次のように実行できます。

resources :user_bundles, :path => '/user-bundles'

別のオプションは、初期化子を介してRailsを変更することです。ただし、これは将来のバージョンで機能しなくなる可能性があるため、お勧めしません(編集:Rails 5では機能しません)。

: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
于 2011-10-17T18:48:09.247 に答える
5

コントローラとアクションの名前をオーバーロードして、ダッシュを使用できます。

# config/routes.rb
resources :my_resources, path: 'my-resources' do
  collection do
    get 'my-method', to: :my_method
  end
end

コンソールでテストできます。

rails routes -g my_resources
my_method_my_resources GET  /my-resources/my-method(.:format) my_resources#my_method
于 2017-07-23T11:58:35.153 に答える
2

名前付きルートを使用できます。単語の区切り文字として「-」を使用できます。ルート.rbでは、

map.name_of_route     'a-b-c',       :controller => 'my_controller', :action => "my_action"

これで、 http:// my_application/abcのようなURLは指定されたコントローラーとアクションに移動します。

また、動的URLを作成するため

map.name_of_route    'id1-:id2-:id3',       :controller => 'my_controller', :action => "my_action"

この場合、'id1、id2、id2はhttpparamsとしてアクションに渡されます

あなたの行動と見解では、

name_of_route_url(:id1=>val1, :id2=>val2, :id3=>val3) 

URL'http:// my_application/val1-val2-val3 'に評価されます。

于 2011-03-17T16:50:04.873 に答える
2

コントローラとビューファイルでアンダースコアを使用する場合は、ルートファイルでダッシュを使用するだけで機能します。

get'blog/example-text'これはこのコントローラーのルートです

def example_textend<-これは私のコントローラーです

example_text.html.erbはファイルです

これは実際のリンクですsite.com/blog/example-text

私はこれが私にとってはうまくいくと思いました、そしてそれはSEOの賢明さを強調するよりも効果的です

于 2017-01-02T04:42:08.753 に答える