アプリケーション作成
$ rails new アプリケーション名
サーバーを用意
$ rails server
コントローラ&ビュー作成
# localhost:3000/home/top
$ rails generate controller home top #homeはコントローラ名、topはアクション名
ルーティング
config/routes.rb
get '/top' => 'home#top' #localhost:3000/top
名前付きルートとは
$ rake routes
上記を行うことによってわかる名前に_pathをつけたもの。
自分で名付けることもできる
config/routes.rb
get 'notes/:id' => 'notes#show', as: 'note' #as: '名前'で名付けることができる
上記の場合は、note_path
となる
URLとVerbによりアクションは変わる
-
Verb
post(作成)/get(取得)/patch(更新)/delete(削除) -
post
フォームによってリクエストを送信した場合はデフォルトでVerbはPOSTになります -
get
直接URLを入力した場合のリクエストと、リンクによるリクエストではデフォルトでVerbはGETになります。
<% %>と<%= %>の違い
- <% %> => erbにhtmlに出力されない(ビューではなくコントローラに書く)
- <%= %> => erbにhtml出力される
コントローラで定義した変数をビューで使う
例
class HomeController < ApplicationController
def top
@message = "Hello World" #変数に@をつける
end
end
# localhost:3000/top
<%= @message %> #Hello World
リンクの作成
#{}は省略可能
<%= link_to "表示するテキスト", "URL", { id: "id名", class: "class名" } %>
<%= link_to "表示するテキスト", "名前_path" %> #名前付きリンク
ルートの設定
config/routes.rb
root 'home#top' # localhost:3000
viewの共通部分
app/views/layouts/application.html.erb
- application.html.erbのheadには、application.jsとapplication.cssが読み込まれており、
assets内の全てのjs/cssファイルを読み込んでいることと同義 -
<%= yield %>
に個別に書かれた内容が入る
フォーム作成
<%= form_tag 送信先URL do %>
<input type = "text" name = "title" value = "hoge">
<textarea name = "content">hoge</textarea>
<input type = "submit" value = "投稿する">
<% end %>
<%= form_tag 送信先URL do %>
<%= text_field_tag :title,"hoge" %>
<%= text_area_tag :content, "hoge"%>
<%= submit_tag "投稿する" %>
<% end %>
フォームからの値の受け取り方
def create
@title = params[:title] #paramsというハッシュからtitleをキーに持つ値を取り出す
end
- ハッシュとは(配列との違い)
配列とハッシュの違いを確認しておくと、配列は複数のオブジェクトを順に並べて先頭から番号を割り当てたものです。それに対してハッシュはバラバラの位置に配置したオブジェクトに目印となるキーが付いていると考えて下さい。
モデルとデータベースの作成
- モデルとは
コントローラから命令され、データベース操作するもの。
#titleとcontentを保存するためのNoteモデルを作成
$ rails generate model Note title:string content:text
#データベースの生成
$ rake db:migrate
- データ型
string:短い文字列、text:長い文字列
データベースにデータを保存
例
def create
@note = Note.new # Noteクラス(Noteモデル)のインスタンス生成
@note.title = params[:title] #セッターを利用しNoteのインスタンス変数に値をセット
@note.content = params[:content]
@note.save #savaメソッドを飛び出しデータベースに保存
end
データベースのデータを更新
例
ビュー側
<%= form_tag update_note_path(@note.id), method:'patch' do %>
#コントローラ側
def update
@note = Note.find(params[:id]) # Noteの中からidに合致したデータを持ってくる
@note.title = params[:title] # 上書き
@note.content = params[:content]
@note.save
end
データベースのデータを削除
#routes.rb
delete '/notes/:id' => 'notes#destroy', as: 'deatroy_note'
#リンク
<%= link_to '削除する', destroy_note_path(@note.id), method:'delete' %>
#コントローラ
def destroy
@note = Note.find(params[:id])
@note.destroy
end
データベース構造の確認
$ rails console
DB名.all #例:Note.all
quit #console機能終了
gemとは
「gem」とは、便利な機能を集めたRubyのプログラムのことです。gemを使うと、複雑な機能を簡単に実装できるので非常に便利です。Gemfileというファイルに必要なgemを書き、「bundle install」コマンドでインストールできます。
$ bundle install
おすすめgem
source 'https:#rubygems.org'
# データを閲覧するときに見やすくしてくれる
gem 'hirb', '0.7.3'
# railsのgem
gem 'rails', '4.2.1'
# sqlite3データベースのgem
gem 'sqlite3', '1.3.10'
# SCSSスタイルシートのgem
gem 'sass-rails', '5.0.3'
# JavaScript assetの圧縮用のgem
gem 'uglifier', '2.7.1'
# CoffeeScriptのgem
gem 'coffee-rails', '4.1.0'
# jQueryのgem
gem 'jquery-rails', '4.0.3'
# Turbolinksのgem
gem 'turbolinks', '2.5.3'
# rails consoleを使いやすくするgem
gem 'pry-rails', '0.3.4'
# hirbの出力を日本語に対応させるgem
gem 'hirb-unicode'
データベースの内容をビューに一覧表示
#コントローラ側
def index
@notes = Note.all #noteテーブルのデータを全部取得
end
#ビュー側
<% @notes.each do |note| %>
<%= note.title %>
<% end %>
findメソッド
- モデル名.find()
Note.find(1) #id:1のデータを取得する
アクション
出典:Progate