0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Rails学習メモ(初学者向け)③

Last updated at Posted at 2025-06-12

Rails学習メモ(初学者向け)

どうも、nus4です。

Rails講座の学習メモ3回目です。
前回投稿より時間が経ってしまいました…
マイペースではありますが、投稿は継続していきますので、今回もよろしくお願いします!

学習方法

  • Progate Ruby on Rails5コース
     (Ruby学習に引き続き、愛用させてもらってます!)

📝 目次

データベースの値を取得する

# ターミナルコマンド
変数名 = モデル名.find_by(カラム名: 値)

引数部分はカンマを間にいれることで、複数のカラム:値を指定することが可能です。

データベースの中身をビューに表示させる

特定のレコードなど、データベースの中身をビューに表示させたい場合、
URLにカラム値を含めてアクション指示を行うと便利です。

コード例

  • routesファイル:カラム値を含めたURL名の場合、どのアクションに飛ぶかを追記
  • controllerファイル:アクション内でparams変数を使用してURL内の値を取得する
  • htmlファイル(表示用ビュー):アクション内で取得した変数を使用する
# routeファイル
get "~~/:URL変数名" => "コントローラ名#アクション名"
#    <---URL--->

上記のように、routesファイルを変更することで、":URL変数名"の部分がどの値でも共通のアクションへ飛ばせるようになります。
逆に、どの値でも合致するため、route内では最下行に追加することを意識しましょう。
(routeは上から順に合致するものを探すため)

# controllerファイル
def アクション名
    # 変数値を直接取得
    @変数名 = params[:URL変数名]

    # カラム内で変数値に合致するレコードを取得する
    @変数名 = モデル名.find_by(カラム名: params[:URL変数名])
end

URL内にある変数値はparamsという変数に[URL変数名: 値]という状態で入っているため、取得は上記の書き方になります。

<!-- htmlファイル -->
<%= @変数名 %>

HTMLの入力フォームからデータベースに変更を加える

テキストボックスなどの入力値をデータベースに追加する場合は、
name属性を使用することで実現できます。

コード例

  • htmlファイル(入力用ビュー):入力フォームにform_tagで転送先URLを示し、name属性名をつける
  • routesファイル:postアクションを追加する
  • controllerファイル:アクション内でインスタンスを作成し、保存する
<!-- htmlファイル -->
<%= form_tag("URL") do %>
    # 入力フォーム 例)textarea
    <textarea name="name属性ハッシュ名">"初期値"</textarea>

    # 入力フォーム 例)input
    <input name="name属性ハッシュ名" value="初期値">
<% end %>

form_tagとname属性を記入することで、入力値の転送先を正しく指定できます。
form_tagの場合、転送先のアクションはgetではなく、postにルーティングされるので気をつけましょう。

# routesファイル
post "URL" => "コントローラ名#アクション名"

データベースに変更を加える場合は、今までのgetアクションではなく、
postアクションにする必要があります。
書き方は基本的にgetアクションと同じです。

# controllerファイル
def アクション名
    # name属性値をカラム値とした、データを作成
    @インスタンス名 = モデル名.new(カラム名: params[:name属性ハッシュ名])
    # 作成したデータを保存
    @インスタンス名.save

    # postアクションで対応するビュー(URL)に転送する
    redirect_to("/URL")
end

アクション内ではredirect_toを使用することでも、他のURLに転送(リダイレクト)を行うことが可能です。

おまけ データベースを降順に並び替える

orderメソッドでデータベースを並び替えてから表示させることが可能です。
":desc"だと降順で、":asc"だと昇順に並び替わります。

# controllerファイル
def アクション名
    @変数名 = モデル名.all.order(カラム名: :desc)
end

変数は配列型になります

いかがでしたでしょうか。
まとめるのに苦戦していまして、改善があれば今後も適宜更新する予定です!

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?