#はじめに
progateとドットインストールでrails
の学習を行い、使用したコードの説明をしてみました。
学習の効率を向上させるためのアウトプットとしての活用なので、間違いがあればご指摘いただけると嬉しいです。
#使用したコードと説明
##コマンドライン
$ rails new myblog
アプリケーションを作成する。
$ rails g model Post title:string body:text
モデルとテーブルを作成する。
モデルとは、データベースとのやり取りを行うクラスのこと。
string
は文字列、text
は長い文字列を作成する。
$ rails db:migrate
データベースに変更を反映させる
$ rails g controller Posts
controller
を作成する。
controller
:ブラウザからリクエストを受け取り、model・viewとのやり取りをする役割を持つ。
$ rails routes
設定されているルーティングの内容を確認する。
ルーティング:受け取ったURLを認識し、適切なコントローラ内アクションに割り当てる役割を持つ。
$ rails c
rails console
を実行する
$ rails s
railsのサーバを起動させる。
##controllser.rbファイルで使用したコード
@post = Post.find_by(id: params[:id])
データベースから、該当するidを見つけて、そのデータを@post
に代入する。
@post.save
@post
の中身をデータベースに保存する。
@post.destroy
@post
の中身をデータベースから削除する。
destroy
アクションへのリンクを記述するときは、メソッドを記述する。
def update
redirect_to("フォルダ名/ファイル名")
end
redirect_to
は、アクションを実行した後、指定したURLにページ遷移する。
def update
render("フォルダ名/ファイル名")
end
render
は、別のアクションを経由せずに、指定したURLに直接viewを表示する。
def update
flash[:notice] = "表示させたい文字を入れる"
end
<%= flash[:notice] %>
を記述した箇所に、フラッシュメッセージを表示させる。
フラッシュメッセージの特徴は、ページ上に一度だけ表示されること。
def index
@posts = Post.all
end
全てのデータを取得する。
##新しくページを作成する手順
例として詳細ページを作成する手順を見ていきます。
そのため、アクション名はshow
とします。
コントローラ名は、コマンドラインの項目で記述したposts
とします。
手順は3つありますが、どの手順から行っても問題ないです。
def show
end
①controller
ファイルにshow
アクションを追加する。
get "posts/:id" => "posts#show"
②show
アクションへのルーティングを追加する。
③作成したアプリケーションの中にあるapp
→views
→posts
フォルダの中に、show.html.erb
を作成する。
##リンクを作成する
index
から詳細ページへ移動するリンクを見てきます。
<%= link_to(post.content, "/posts/#{post.id}") %>
link_to
メソッドは<a>
タグに相当する。
この場合、post
に記述してあるテキストがリンクになり、データベースから取得したid
のページに移動する。
##フォームに入力した内容をデータベースに保存する
<%= form_tag("/posts/create") do %>
<textarea name="content"></textarea>
<% end %>
form_tag
は、入力フォームの値を送信する。
送信する値を指定するために、name
属性を設定する。
@post = Post.new(content: params[:content])
@post.save
redirect_to("/posts/index")
入力フォームから受け取ったデータをデータベースに保存する。
保存後に、index.html.erb
ページに移動する。
##カラムを追加する
rails g migration ファイル名
①マイグレーションファイルを作成する。
def
add_column :テーブル名, :カラム名 , :データ名
②マイグレーションファイルの中身を記述する。
rails bg:migrate
③データベースに保存する。
#最後に
とにかくrails
で成果物を作れるくらいに学習を進めていきたいと思います!