現在テックキャンプの短期集中コースを受講しているKengineerです。
5月上旬に短期集中コースで受講を開始して、ここまで駆け足で進めてきました。
アウトプットが全然できていないことを反省し、カリキュラムで学んだことや、最終課題、オリジナルアプリ開発に関連した内容を、投稿していきたいと思います。
まずはにフォーム実装でよく出てくる「@」で始まるインスタンス変数と「:」で始まるシンボルの違いや、コントローラーはじめ、html.erbの中での記述方法が最初学んだときに全然頭に入ってこなかったので、今の自分の理解を備忘録としてまとめてみます。
1. 「@」で始まるインスタンス変数とは?
- コントローラーで定義するインスタンス変数
- たとえば「@categories」「@user」など
- ビュー(HTML)にデータを渡したいときに使う
- インスタンス変数をコントローラーで定義し忘れると、ビューでエラーになるので注意
例:コントローラーでの定義
# app/controllers/items_controller.rb
def new
@categories = Category.all
@item = Item.new
end
このように定義すると、@categories
や@item
はビュー(erbファイル)で使えるようになる
2. 「:」で始まるシンボルとは?
- これは 「シンボル」と呼ばれるRubyのデータ型
- たとえば「:name」「:id」「:category_id」など
- 主に「属性名」や「カラム名」などを指定する時に使う
- シンボルはイミュータブル(変更不可)で、メモリ効率が良いという特徴
例:ActiveHashのモデル
class Category < ActiveHash::Base
self.data = [
{ id: 1, name: '---' },
{ id: 2, name: 'メンズ' },
{ id: 3, name: 'レディース' }
]
end
この場合、:name
や:id
は「name」や「id」という属性名を指します。
3. フォームでの使い分け例
フォームで「カテゴリーを選択」できるようにするには、collection_select
というヘルパーを使う
例:
<%= f.collection_select(:category_id, @categories, :id, :name, {prompt: "---"}) %>
それぞれの意味
部分 | 意味・役割 |
---|---|
:category_id |
保存先のカラム名(ここに選択したidが入る) |
@categories |
選択肢として渡す配列(コントローラーで用意したインスタンス変数) |
:id |
選択肢のvalue属性に使うカラム名(ここではCategoryのid) |
:name |
選択肢の表示名に使うカラム名(ここではCategoryのname) |
{prompt: "---"} |
先頭に「---」という選択肢を表示するオプション |
4. まとめ
-
「@」で始まるもの(@categoriesなど)
→ コントローラーで用意した「データそのもの」(配列やオブジェクト)。ビューに渡すために使う -
「:」で始まるもの(:nameや:category_idなど)
→ 「属性名」や「カラム名」などをシンボルで指定。RubyやRailsでよく使う書き方
Pythonなど他の言語と違うので最初は違和感があるかも
5. さいごに
まだRails学習始めたばかりですが、「@」で始まるインスタンス変数と「:」で始まるシンボルの違いを意識しながら記述することで、理解が深まりやすくなった気がします。
もし間違いや補足があればコメントで教えてください!