URLヘルパー (url_helpers)

url_for

@user = User.find(2)
url_for(@user) # => '/users/2'

コントローラー内もしくはビュー内から呼び出す場合、controller は省略可能

url_for(action: "edit", id: 2) # => '/users/2/edit'

参考:

url_for – ActionDispatch::Routing::UrlFor | Ruby on Rails API [Official]

パラメータ付きで url_helpers を使う

参考:

link_to で任意のリクエストパラメータを渡す – Qiita

Rails の link_to にパラメータを付与する | MogLog

link_to メソッドを使ったリンクの作成 | Ruby on Rails入門

How to use Rails named route helpers with parameters? – Stack Overflow

Rails passing params to new action – Stack Overflow

コントローラー内で url_helpers を使う

include Rails.application.routes.url_helpers

redirect_to root_url

もしくは、

routes = Rails.application.routes.url_helpers

redirect_to routes.users_url

link_to "Users", routes.users_path

参考:

Controller など View 以外から url_helpers (_url, _path) を呼ぶ – Qiita

ActiveJob から url_helper を呼ぶ – Qiita

How to access URL helper from rails module – Stack Overflow

url_helpers の使い分け

参考:

_path メソッドと _url メソッドの使い分け – Qiita

Rails の *_path と *_url に関するメモ | $ cat /var/log/shin

Engine で url_helpers を使う

url_helpers を使いたいところで Engine の routes.url_helpers を include する

include EngineName::Engine.routes.url_helpers

redirect_to root_url

link_to "Users", users_path

もしくは、

routes = EngineName::Engine.routes.url_helpers

routes.hoge_path

参考:

マウントしたエンジンとメインのアプリ間でのアクセス – Qiita

engine の routing を application 側から path で呼び出す – Qiita

Rails.application.routes.url_for doesn’t find routes for engine · Issue #6389 · rails/rails – GitHub

Named routes in mounted rails engine – Stack Overflow

Using the correct url_for method in a Rails engine spec – Stack Overflow

名前付きルーティングの一覧を確認する

Rails.application.routes.named_routes.names

参考:

names – rails/route_set.rb at v5.2.2 · rails/rails – GitHub

定義されているヘルパーの一覧を確認する

Rails.application.routes.named_routes.helper_names

参考:

helper_names – rails/route_set.rb at v5.2.2 · rails/rails – GitHub

RoutesInspector

inspector = ActionDispatch::Routing::RoutesInspector.new(
  Rails.application.routes.routes
)
formatter = ActionDispatch::Routing::ConsoleFormatter.new
inspector.format(formatter)

参考:

rails/inspector.rb at v5.2.2 · rails/rails – GitHub

rails/routes_command.rb at b2eb1d1c55a59fee1e6c4cba7030d8ceb524267c · rails/rails – GitHub

default_url_options

参考:

Rails と関係ないところで ActiveStorage の URL を生成する | コード日進月歩

url_for not using default_url_options[:host] value – Stack Overflow

host

参考:

Full URL with url_for in Rails – Stack Overflow

subdomain

参考:

Rails でカスタムサブドメイン | motolog

url_helpers をモジュール化する

参考:

how to use url helpers in lib modules, and set host for multiple environments – Stack Overflow

host

参考:

Rails 4 url_for with host constraint – Stack Overflow

パフォーマンス

参考:

Rails の url_helper の速度低下を防ぐコツ 翻訳 | TechRacho

A Better Time with Rails url_helpers | Kitty Con Gato

Rails’s url_for weaknesses – Rails Guides

Tagged:

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です