@post = Post.find_by(id: params[:id])
# ここで、`@post` 変数には特定のIDを持つ投稿が代入されています。
# これにより、後続のコードでその投稿にアクセスすることができます。
パラメータから受け取ったIDを使って、特定の投稿をデータベースから探します。
params[:id]
は、リクエストに含まれるIDを指します。
例えば、URLが "/posts/1" のようになっている場合、params[:id]
は 1 になります。
Post
モデルは、投稿に関するデータベーステーブルと対応しています。
find_by
メソッドは、条件に一致する最初のレコードを検索します。
この場合、id
カラムが params[:id]
と一致する投稿を検索しています。
見つかった投稿は @post
変数に代入されます。
特定の投稿の内容を更新して、変更を保存し、最終的に投稿一覧ページにリダイレクトする例
def update
# パラメータから受け取ったIDを使って、特定の投稿をデータベースから探します。
@post = Post.find_by(id: params[:id])
# フォームから送信された内容(content)を取得し、特定の投稿の内容として更新します。
# `params[:content]` は、フォームから送信された内容の一部です。
# 例えば、ユーザーがテキストボックスに入力した内容がここに含まれます。
@post.content = params[:content]
# 変更した投稿内容をデータベースに保存します。
@post.save
# 投稿内容が更新された後、投稿一覧ページにリダイレクトします。
redirect_to("/posts/index")
end
この記述忘れそうなので抜粋。
@post.content = params[:content]
@post.content = params[:content] は、ユーザーがテキストボックスに入力した内容を変数 @post の content プロパティに代入する操作です。
このコード行は次のような役割を果たします:
params[:content] は、ユーザーがフォームやテキストボックスに入力した内容が含まれるパラメータです。例えば、ユーザーが「こんにちは、世界!」というテキストを入力した場合、params[:content] は「こんにちは、世界!」というテキストを保持します。
@post は、特定の投稿を表すオブジェクトです。@post.content は、その投稿の内容を表すプロパティ(属性)です。
@post.content = params[:content] は、ユーザーが入力した内容を投稿の内容として更新する操作です。このコード行の実行後、@post.content はユーザーが入力したテキストに置き換わります。
例えば、ユーザーが「今日はいい天気ですね!」というテキストをテキストボックスに入力して送信した場合、@post.content はそのテキストに更新され、「今日はいい天気ですね!」という内容が特定の投稿に保存されます。
この操作によって、ユーザーが入力した情報をデータベース内の投稿と関連付けることができます。
似たような記述例 --- フォームから送信された内容(content)を使って新しい投稿を作成
def create
# フォームから送信された内容(content)を使って新しい投稿を作成します。
# `params[:content]` は、ユーザーがフォームやテキストボックスに入力した内容を保持しています。
# 新しい投稿オブジェクトを作成し、その内容をユーザーが入力した内容に設定します。
# `Post.new` は、`Post` モデルに基づいて新しい投稿オブジェクトを作成するメソッドです。
# `content:` は、新しい投稿の `content` プロパティに値を設定するためのキーワード引数です。
@post = Post.new(content: params[:content])
# 新しい投稿オブジェクトをデータベースに保存します。
# これにより、投稿がデータベース内に永続化されます。
@post.save
# 投稿の保存が完了した後、投稿一覧ページにリダイレクトします。
redirect_to("/posts/index")
end