こんにちは。
夏がやっと来ました!さいクゥ〜
どうもハチマキです。
はじめに
画面遷移を実現するため、普段下記のように使っているlink_to。
これは至ってシンプルな画面遷移です。
・例1 = link_to 'yahooサイトへGO', 'http://www.yahoo.co.jp/', title: "yahooサイト", class: 'desc-center' ・例2 = link_to 'login_path', title: "ログイン", class: 'desc-center', target: '_blank' do ログイン %br 画面 ・例3 = link_to 'http://www.yahoo.co.jp/', title: "yahooサイト", class: 'desc-center' do = image_tag 'imgae/yahoo-logo'
今回ある検索結果を遷移先に定義したいと思ったのですが、やり方に迷いました。
そのため、色々調べた結果、新たな学びがあったので今回まとめていこうと思います。
環境
- 言語:Ruby
- フレームワーク:Ruby on Rails
- マシン:Mac
任意のパラメータが入ったURLに画面遷移させるやり方
早速ですが、まず初めにこちらから。こんな感じのURLに遷移させます。
「https://〇〇/users?group_id=1?team_id=2」
画面遷移の方法は、link_toのpathの引数にパラメータを定義することで実現できます。
*こんな感じ = link_to users_path(group_id: 1, team_id: 2) *こんな感じ = link_to users_path(group_id: 1, team_id: 2), target: '_blank' do = image_tag 'imgae/yahoo-logo'
上記は至ってシンプルですが、「%5B%5D=〇〇」、「%3A」などが加わったURLに遷移させたい場合にどう定義するのか?となりました。
ここが+αで学べた点です!!
「%5B%5D=〇〇」、「%3A」⇦これらが何かというと、URLのエンコードでそれそれ記号などの意味を持ちます。
以下、URLエンコードの一例
- ? → %3F
- @ → %40
- [ → %5B
- ] → %5D
例えばこんなURLが生成されていたら?
https://〇〇/users?group_id%5B%5D=1&team_id%5B%5D=2
上記エンコードを参考に記述してみると、以下のような引数になります。
こんな感じ = link_to users_path(group_id: [: 1], team_id: [: 2]) こんな感じ = link_to users_path(group_id: [: 1], team_id: [: 2]), target: '_blank' do = image_tag 'imgae/yahoo-logo'
突然ですが、ここでもう一つ例を。
Q. 以下、パラメータを持つURLですが、どのようにlink_toを定義すれば、生成できるでしょうか。?
https://〇〇/?visit_date=2021-07-17&visit_time=19%3A00&expand_visit_minutes=60&num_guests=2
A. おそらくこんな感じじゃないかなと!(答えはわかりません..)
= link_to 〇〇_path(visit_date: '2021-07-17', visit_time: '19:00', expand_visit_minutes: '60', num_guests: '2')
まとめ
本日のポイントのまとめです。これらがわかってしまえば簡単なものです!
- 任意のパラメータが入ったURLに画面遷移させるやり方は、pathの引数にパラメータを定義する!
- %5B%5Dは、エンコードで変換されてるだけなので、調べればすぐ解決!怖くない!
以上、お疲れ様でした。
参考URL
TECHNICAL MANUAL
【リンクの作成!】Railsでのlink_toの使い方 | TechAcademyマガジン
【Rails】link_toに任意のパラメータを付与する方法 - WEB屋のメモ帳
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
日々勉強です。
以上、ハチマキでした。