バキソヤ!

30歳のwebアプリ開発、福岡グルメ、バンド活動など日々の気づきを共有します。

Ruby on Rails 使い方まとめ

アプリケーション新規作成

・アプリ用フォルダ、ファイルの一括作成
・サーバー起動
・コントローラー作成
・ルーティング(routing)
 アクセスされたURLからコントローラのどのアクションを呼び出すか
・コントローラー(controller)
 ・ルーティングから呼び出すアクションを作成する。
 ・変数の定義やデータ変更処理など
・ビュー(view)
 ・HTML、CSSでページを作成
 ・コントローラーから受け取った値を表示するなど。
・DB操作

ページの追加方法

・routes.rbに新規ページのルーティングを追加
・コントローラーにルーティングから呼び出すアクションを追加
・○○○○○.html.erbをviewフォルダ内に作成

よく使う階層

・app/assets
・app/controllers
・app/views
・config/routes.rb
・db/migrate
・public/
 画像など配置
・Gemfile
 gemの追加(拡張機能

アプリ用フォルダ、ファイルの一括作成

rails new アプリ名

・開発に必要なフォルダ、ファイルの一括生成

rails server

・サーバー起動

rails generate controller コントローラー名 アクション名

rails g controllerでもOK
・コントローラー作成
・app/view/home/top.html.erb
・例)rails generate controller posts index




ルーティング(routing)

・config/routes.rbに設定する。
・get、postで役割が異なる。
 ・ざっくりと、、、
  ・get:DBを変更しないアクションを呼び出す。
  ・post:DBやsessionを変更するアクションを呼び出す。

get "home/top" => "home#top"

ドメイン/home/topにアクセスされたら、homeコントローラーのtopアクションを呼び出す。

get "post/:id" => "posts#show"

ドメイン/post/○○ にアクセスされたら、showアクションを呼び出す。
・○○はなんでもOK。
・指定された○○は、params[:id]で取り出せる。
※post/:idのルーティングは、post/indexより下に記述する。
(ルーティングは、ファイルの上から合致するか検索しているため)

post "posts/create" => "posts#create"

・フォームから値を受け取る時は、getではなくpost。
・こんな感じでフォームを挟む。

 <%= form_tag("posts/create") do %>
  # HTMLでformを記述
 <% end %>

・フォーム内のsubmitボタン押したらデータ送信される。
・フォームのname属性に指定した文字列でデータを受け取る。

 params[:hoge]で受け取るとき
 <textarea name="hoge">初期値など</textarea>

変数

・アクションで定義した変数はビューでは使用不可
 ※@が先頭にある変数はビューでも使用可能
・sessionは、session[:キー名]で設定。


その他

link_to("表示テキスト","リンク先")

link_to("表示テキスト","リンク先",{method: "post"})

・ルーティングのpostを検索

redirect_to("リンク先")

・DBへの変更処理の後に、一覧ページを表示するといった処理などで使用する。

render("posts/new")

newアクションを経由せずに、new.html.erbを表示。

DB

rails g model Post content:text

・postsテーブルの作成(マイグレーションファイルは単数形(Post)にしてを生成する)
・DBへの変更内容を記述したファイルを生成する。
・app/models/post.rb
・db/migrate/マイグレーションファイル
・content:text は、contentというtext型のカラムを生成するということ

rails db:migrate

マイグレーションファイルからDBへ変更内容の反映
・ファイルを生成したら必ず実行が必要(実行せずにページへアクセスするとエラーが発生する)

post = Post.new(content: "○○○○○")

テーブル操作

post.all

post.first

post.find_by(id: ***)

post.save

・if文を使って保存できたかどうかで処理を分けたりする。
・postテーブルへの保存が失敗した時に
 post.errors.full_messagesにメッセージが入る。
 eachを使って全て表示するといい。

post.all.order(id: :desc)

・降順に並べ替え

post.destroy

DB変更

rails g migration ファイル名

・作成されたマイグレーションファイルを編集して、rails db:migrateで反映する。
def change
  変更内容を追記
  add_column :テーブル名, :カラム名, :データ型
end

マイグレーションされたか確認

rake db:migrate:status

up:反映済
down:未反映。不要ならマイグレーションファイルを削除可能。

バリデーション

・model/○○○○○.rb に記述する。

validates :検証するカラム名, {検証する内容}

validates :content, {presence: true}

・空での保存を禁止

flashメッセージ

flash[:notice] = "○○○○○"
アプリ共通で使うので、application.html.erb内に記述すると良い。<%= flash[:notice] %>



cloud9

cd アプリ名 でworkspaceから移動しないとrails コマンド入力しても Usage:~~~~~が表示されてしまう。



参考にしたサイト
Cloud9環境でRuby on Railsの開発をする - 風穴をブチ開けろ