Ruby on Railsのアクションで変数を定義する方法

アクションで変数を定義する方法

Ruby on Railsは、規約通りに特定のコマンドを使用することで、スピーディにアプリ開発ができるフレームワークです。

前回までは

  1. HTMLで記述したテキストを、変数に代入してRubyコードとして実行、表示する方法
  2. each文で表示する方法

を学んできました。

これまで、変数はビューファイル内で定義してきましたが、実は「Ruby on Rails」では、変数はビューよりも

アクションで定義する方が一般的

です。

そのため、今回は、コントローラーのアクション内で変数を定義する方法を解説していきたいと思います。

Ruby on Railsのそもそもアクションとは?

Ruby

前の記事で、簡易的な投稿一覧ページを作った時のことを思い出してみてください。

  • コントローラー名を「posts」
  • アクション名を「index」

として

rails g controller posts index

このように記述することで、必要なファイルとフォルダが自動で生成されましたよね。

アクションは、ファイル内で実行する処理のことで、この時に使用した「index」以外にも次のようなものがあります。

Ruby on Railsのアクションの種類と役割

  • index・・・一覧を表示する
  • show・・・詳細を表示する
  • new・・・新規作成する
  • create・・・登録する・保存する
  • edit・・・編集する
  • update・・・更新する
  • destroy・・・削除する

アクション内で変数を定義する

アクション内で変数を定義するとはどういうことでしょうか。

今までは

rails g controller コントローラ名(複数形)アクション名

で自動生成されたファイルの中の

コントローラ名(複数形)/index.html.erb

に、投稿内容の記述や変数の定義を行ってきました。

アクション内で変数を定義するということは、変数を

「コントローラ名(複数形)/index.html.erb」から「コントローラ名(複数形)_controller.rb」へ

移動させる必要があります。

ビューで使う変数は「def」と「end」の間 

「コントローラー名(複数形)_controller.rb」のファイルを開き

「def」と「end」の間に、記述していきます。
def アクション名(indexなど)
 @変数 
end 

defは「アクションの宣言」という意味です。

  1. def のあとに実行するアクション名
  2. 変数の前には「@」を記述 
  3. endを忘れずに

Ruby on Railsの「@変数」という点に注意

これまでのように、ビューファイル内で変数を定義するときは

<% (自分で決めた)変数名 = "値(入れておきたい文字や数値)” %>

でOKでした。

しかし、アクション内で変数を定義する時には、

変数の前に「@」

をつけます。

「@」を付けることで「インスタンス変数」という特別な変数になり、コントローラで定義したものを、ビューファイルでも使えるようになります。

例えば「posts_controller.rb」で

def index 
 @ posts="Ruby 勉強中" 
end 

と、定義したものを「posts/index.html.erb」で使いたい場合

<%= @posts %>

と記述すれば、

Ruby 勉強中

と表示することができます。

Ruby on Railsの「@」は、忘れないように注意しましょう。

Ruby on Railsのアクションで変数を定義する方法まとめ

これまで

  1. 「rails g controller」を使用してファイルを作成
  2. 簡易的な投稿一覧ページを作成
  3. HTMLで書いた投稿内容をviewファイル内で変数に代入し、Rubyコードとしてデータを実行、表示 
  4. 配列の中にある要素を、ひとつずつ順番に取り出して実行する「繰り返し処理方法」each文の使い方
  5. アクション内での変数の定義の仕方

を学んできました。

遠回りに感じたかもしれませんが、これらは、すべて今後

  • 「データーベース」に接続するため
  • 「データーベース」を扱うため

に必要なスキルです。頑張りましょう。

この記事を書いた人

よこやま良平

こんにちは!18年以上ITエンジニアとして活動してきた
よこやま良平です。

4歳~85歳まで、年間1,792人名以上の方に
パソコンやプログラミング講座を行ってきました。

また18冊以上の書籍を出版しており、連続で1位を獲得しました。
オンライン講座では200件以上のレビューを頂いており
評価は4.9/5.0と高評価を得ています。

その他これまでに3000以上のサービス・システム・サイトを作成。