Ruby on Railsは、規約通りに特定のコマンドを使用することで、スピーディにアプリ開発ができるフレームワークです。
前回までは
- HTMLで記述したテキストを、変数に代入してRubyコードとして実行、表示する方法
- each文で表示する方法
を学んできました。
これまで、変数はビューファイル内で定義してきましたが、実は「Ruby on Rails」では、変数はビューよりも
アクションで定義する方が一般的
です。
そのため、今回は、コントローラーのアクション内で変数を定義する方法を解説していきたいと思います。
目次
Ruby on Railsのそもそもアクションとは?
前の記事で、簡易的な投稿一覧ページを作った時のことを思い出してみてください。
- コントローラー名を「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は「アクションの宣言」という意味です。
- def のあとに実行するアクション名
- 変数の前には「@」を記述
- 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のアクションで変数を定義する方法まとめ
これまで
- 「rails g controller」を使用してファイルを作成
- 簡易的な投稿一覧ページを作成
- HTMLで書いた投稿内容をviewファイル内で変数に代入し、Rubyコードとしてデータを実行、表示
- 配列の中にある要素を、ひとつずつ順番に取り出して実行する「繰り返し処理方法」each文の使い方
- アクション内での変数の定義の仕方
を学んできました。
遠回りに感じたかもしれませんが、これらは、すべて今後
- 「データーベース」に接続するため
- 「データーベース」を扱うため
に必要なスキルです。頑張りましょう。