【Rails入門】button_toが一目でわかる!上手なボタンの作り方

みなさん、こんにちは!

フリーランスプログラマーのsatoです。

今回はRailsの「button_to」について見ていきましょう。

どんなサイトを作るにしてもボタンは必須ですよね?

このbutton_toをマスターして、自在にボタンを操れるようになりましょう!

というわけで今回のアジェンダです。

[基本] button_toとは?
[基本] button_toを使ってみよう!
[応用] CSSの反映について!

まず仕組みと使い方を学び、その後でCSSの反映やJavaScriptとの組み合わせ方などを見ていくことにしましょう。

それではよろしくお願いいたします。

目次

button_toとは?

button_toとは一言で言えば「ボタンを作成する」仕組みです。

いわゆる以下のようなボタンが作成できるわけですね!

rails-button_to-1

そして一行で、非常に簡単にボタンを生成することができます。

今回はその辺りも見ていきましょう。

button_toを使ってみよう!

兎にも角にも、まずは使用してみましょう。

まずは一番シンプルに、ボタンを押したら「mypagesコントローラー」「indexビュー」へ飛ぶ。

そんな流れを見てみましょう。

使用してみる!

作成はとてもシンプルです。

<%= button_to "ボタン", {controller: 'mypages', action: 'index'}, {method: :get} %>

たったこれだけです!

内容も簡単ですね。

「ボタン」という文字を中に表示しているボタンで…

「mypagesコントローラー」「indexアクション」「getメソッド」で通信を行う。

そんな内容です。

別ページへ飛ばしたいだけなら、通常これだけで事足りると思います。

※今回は初心者向けに、多分ルーティング設定はgetだろうと予測し「getメソッド」を指定しています。もしエラーが出る場合は、次のエラーが出た場合をお読みください。

エラーが出た場合

もしルーティング設定をいじっている場合は「No route matches」のようなエラーが出る可能性もあります。

その辺りの解消はルーティングの設定を学ぶ必要がありますので、以下の記事を参考に勉強してみてください。

パラメーターを追加してみる!

ページを遷移する際にパラメーターを渡したい場合もあるでしょう。

その場合は、以下のように追加しましょう。

<%= button_to "ボタン", {controller: 'coins', action: 'index'}, {method: :get, params: {num1: 'aaa', num2: 'bbb'}} %>

追加されたのは「params: {num1: ‘aaa’, num2: ‘bbb’}」の部分です。

これで「num1(中身はaaaという文字列)」「num2(中身はbbbという文字列)」という二つのパラメーターを送ることができます。

これも簡単ですね!

またパラメーターの受け取りについては、以下の記事が参考になるでしょう。

受け取り方がわからない人は読んでおきましょう。

CSSの反映について!

次に応用としてボタンにCSSをつけてみましょうか。

今回は仮に「mybutton」というクラスがあったとして、ボタンにつける場合を見てみましょう。

<%= button_to "ボタン", {controller: 'coins', action: 'index'}, {method: :get, class: "mybutton"} %>

先ほどの引数を加えたものの後ろに「class: "mybutton"」部分が追加されているのがわかると思います。

これだけでclassの追加が可能です。

またclassではなくidを追加したい場合「id: "mybutton"」とidを指定し追加を行いましょう。

まとめ

いかがでしたでしょうか。

Railsの引数で苦戦をする人は意外と多いと思います。

しかし、こういった問題解決の積み重ねが、プログラムの上達につながります。

ぜひ今回学んだことを生かして、次にぶつかった課題も上手に解決していきましょう!

この記事を書いた人

【プロフィール】
DX認定取得事業者に選定されている株式会社SAMURAIのマーケティング・コミュニケーション部が運営。「質の高いIT教育を、すべての人に」をミッションに、IT・プログラミングを学び始めた初学者の方に向け記事を執筆。
累計指導者数4万5,000名以上のプログラミングスクール「侍エンジニア」、累計登録者数1万8,000人以上のオンライン学習サービス「侍テラコヤ」で扱う教材開発のノウハウ、2013年の創業から運営で得た知見に基づき、記事の執筆だけでなく編集・監修も担当しています。
【専門分野】
IT/Web開発/AI・ロボット開発/インフラ開発/ゲーム開発/AI/Webデザイン

目次