スポンサーリンク

【Ruby】「link_to」原因で実際に起こったルーティングエラーを丁寧に解説!!

みなさんこんにちは!
のむ(@nomu_engineer)です!

今回の記事では、タイトルにもあるとおり、「link_to」の記述の仕方について丁寧に解説していきます

簡単に記述することができますが、しっかりと理解していないとルーティングエラーを招いてしまいます。
実際に僕が体験したルーティングエラーになる要因も含めて記事にまとめました。

この記事を読むメリット
・link_toの記述の仕方がわかる
・link_toによるエラーの可能性を一つ消せる

この記事を読むおすすめの読者
・プログラミング初心者
・駆け出しエンジニア
・link_toの記述を詳しく知らない方

それでは早速本題の方に入っていきたいと思います

「link_to」とは??

そもそも「link_to」についてあまり知識がない方もいるかと思いますので、少し触れておきたいと思います!

「link_to」とはform部品の一つで、ビューでリンクを表示するためのメソッドです。
htmlを学習している方はスッと入ってくるかと思いますが、いわゆるhtmlのaタグです。

ビューで使用する、ActionView::Helpers::UrlHelperクラスで定義されている、helperメソッドの一つになります。

「link_to」の記述の仕方

ここからは「link_to」の記述の仕方について解説していきます!

「link_to」メソッドの書き方としては、「link_to」の第一引数にビューに表示する文字列、第二引数にリンク先のパス(URL)を指定します。

記述の仕方は以下の通りです。

<%= link_to "表示する文字列", リンク先のパス(URL) %>

それでは実際に値を入れて記述していきます。

<%= link_to "Google", "https://www.google.com/"

上記の記述は誰もが知っているGoogleのトップページのURLです。
このように「link_to」メソッドを使うことで、Googleのトップページにユーザーを遷移させることができるリンクを作成することができます。

次に同じアプリ内のパスを指定する書き方で「link_to」を記述してみます。

<%= link_to "商品一覧", "/items/index" %>

上記の記述をすることで、アプリ内で定義している、商品一覧のページに遷移するためのリンクを作成することができます。

上記のパスの指定がわからない方は、ルーティングの確認(rails routesコマンド)をターミナルで行うことで、どのパスを指定したらいいのかがわかります。
URI Patternに記載されているパスになります。

そして、最後、ルーてイングの名前(Prefix)を用いて「link_to」を記述する仕方があります。
ここで僕はある過ちを犯して、エラーに苦しみました。

是非ここは最後まで読んでいただきたいです。

まずはこちらの画像をご覧ください!

1番上の1番左側にPrefixと書いてあると思います。
そして、その下に「new_user_session」や「destroy_user_session」等の記述がしてあると思います。

こちらのPrefixを指定することでも「link_to」メソッドを用いたリンクの作成が行えます。
記述の仕方は以下の通りです。

<%= link_to "ログイン画面", new_user_session_path %>

ここで注意していただきたいことがあります!
このPrefixを用いた書き方をする場合は、ダブルクォーテーションでパスを囲んではいけません!!!

Prefixをダブルクォーテーションで囲むと、ただの文字列として認識されてしまいます!!

なので、ルーティングエラーを引き起こしてしまいます。。

僕は実際にそれでルーティングエラーを起こしました。。。笑
原因の特定までにかなりの時間を使いました。

エラーを経験することは大事ですが、無駄なエラーは本当に時間の無駄なので、気をつけましょう!!

最後に

以上で「link_to」メソッドの記述の解説を終わりたいと思います!

最後にまとめると、

・「link_to」メソッドは、ビューでリンクを表示するためのメソッド

・第一引数はビューで表示したい文字列を記述

・第二引数はリンク先のURLやパスを指定

・Prefixを用いる場合はダブルクォーテーションで囲まない!!

以上になります!
無駄なエラーを起こさないようにするためにも、しっかり抑えておきましょう!!

ありがとうございました。

スポンサーリンク




この記事を書いた人