読者です 読者をやめる 読者になる 読者になる

railsのurlをroot_url+手書きで書いてたりするの?

rails

はい、書いてました。

手書きの何が悪いんだ!

って思うんですが、テストや変更に圧倒的に弱いんですよね。

これが致命的ですね。

基本的に手書きで書くのはやめましょう。

手書きで書くというのは、こういうのですね。

url = root_url + 'contact'

こういう状況に陥るのは、メールのurlを書く場合に、どうすればいいんだ?って応急処置的に手書きで書いちゃうんですよ。

対策

url_helperをincludeします。

include Rails.application.routes.url_helpers

これで対象となるpathの値を取得することができます。

user_sessions_path GET    /user_sessions(.:format)    user_sessions#index
POST  /user_sessions(.:format)    user_sessions#create
new_user_session_path   GET    /user_sessions/new(.:format)  user_sessions#new
edit_user_session_path  GET    /user_sessions/:id/edit(.:format)    user_sessions#edit
user_session_path   GET    /user_sessions/:id(.:format) user_sessions#show
PATCH  /user_sessions/:id(.:format) user_sessions#update
PUT    /user_sessions/:id(.:format) user_sessions#update
DELETE /user_sessions/:id(.:format) user_sessions#destroy

例えば、上記のようなやつですね。

#相対パス
new_user_session_path
=> "/user_sessions/new"

#絶対パス
new_user_session_url←urlに変更する
=> "http://localhost:3000/user_sessions/new"

ちなみに上の:id(.:format)が入る場合

user_session_path(id: 1)
=> "/user_sessions/1"

これでurlの処理で困ることはなくなると思います。

まとめ

url_helpersが便利すぎ