14
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Ruby on Railsの基本

Last updated at Posted at 2016-02-15

アプリケーション作成

$ 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のデータを取得する

アクション

スクリーンショット 2016-02-16 7.32.18.png

出典:Progate

14
5
2

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
14
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?