web-dev-qa-db-ja.com

:as in Rails routes.rb

config/routes.rbで、私は両方を試しました:

root :to => 'things#index', :as => 'things'

そして

root :to => 'things#index'

http://localhost:3000/を押すと、両方のアプローチが機能し、違いはないようです。

:asオプションは何に使用されますか?

58
ryanprayogo

:asオプションは名前付きルートを形成します。

通常、ルート以外のルートで使用されます。例えば:

match '/search' => 'search#search', :as => 'search' # SearchController#search

次のようなことができます:

<%= link_to search_path, 'Click Here to Search!' %>

search_pathおよびsearch_urlは、:as

ルートルートの場合、:as URLヘルパーroot_pathおよびroot_urlはRailsによって定義されます。

87
Andy Lindeman

Rails 4互換。

path_to_your_app/config/routes.rb

get "/profile/edit" => "users#profile_edit", :as => "edit_me"

Ruby 2.0なので、以下を使用できます。

get "/profile/edit", to: "users#profile_edit", as: "edit_me"

path_to_your_app/app/views/**in必要なビュー

<%= link_to "Edit profile", edit_me_path %>

必要かどうかわからない場合は、matchを使用しないでください。

次のパターンで使用すると、脆弱性が作成されます。

match ':controller/:action/:id'

ドキュメントから:

HTTPメソッドを指定せずにルーターでmatchメソッドを使用しないでください。アクションをGETとPOSTの両方に公開する場合は、[:get, :post]オプション。アクションをGETに公開する場合は、ルーターでgetを使用します。

の代わりに: match "controller#action"

行う: get "controller#action"

続きを読む:

試合について

http://github.com/Rails/rails/issues/5964

ルートマッピングについて

http://apidock.com/Rails/v4.0.2/ActionDispatch/Routing/Mapper/Base/match

http://api.rubyonrails.org/classes/ActionDispatch/Routing/Mapper/Base.html

一般的なルートについて

http://api.rubyonrails.org/classes/ActionDispatch/Routing.html

15
Roman Bambycha

:asオプションは、名前付きパスを作成します。その後、コントローラーとビューでこのパスを呼び出すことができます(例:redirect_to things_path)。これは、ルートパスには(rootという名前が既に付けられているので)あまり有用ではありませんが、追加する新しいルートには非常に有用です。

5
David Sulc