LoginSignup
0
0

More than 3 years have passed since last update.

Rails チュートリアル学習メモ

Last updated at Posted at 2019-11-27

今日からチュートリアルを開始

プロジェクトの作成

$ rails new project_name

サーバーの起動

$ rails server

これで localhost:3000 でアクセス可能

Controllerの生成

$ rails generate controller home top
=> rails g controllerに変換可能

Laravelの php artisan make:controller 的な感じではなく、自動で views/home/tophtml.erb と、 app/controllers/home_controller.rb とルーティングの config/routes.rb が生成され、ルーティングに自動で追加される。便利だなこれ。
ただ、既存のControllerが存在する場合、 rails generate controller home test はエラーになる。

ルーティング

config/route.rb に記述

route.rb
Rails.application.routes.draw do
  get "top" => "home#top"
  get "about" => "home#about"
end

画像挿入

public配下に画像ファイルを配置し、呼び出し元で /image_name.png などを入力すれば反映される。

「erb」とは「Embedded Ruby(埋め込みRuby)」のこと

viewでの表示

<%= url %>

PHPの <?= $url ?> と同じイメージ

ループ処理

<% posts.each do |post| %>
<% end %>

Controller側でViewに変数を渡す


class UrlController < ApplicationController
  def index
    @urls = [
      "https://google.com",
      "http://google.com",
    ]
  end
end

@ で変数定義するけど、勝手に同じ名前のViewにファイルへ変数が渡るのがもやもやするな。
とりあえず書き方は Python に似ている。

DBのマイグレーションファイル作成

$ rails g model モデル名 column_name1:type column_name2:type

自動でモデル名の複数形の名前のというテーブルが生成される

マイグレーション実行

$ rails db:migrate

Laravelと同じイメージで使えるのは嬉しい

マイグレーション実行と同時に、Modelのファイルが生成される。Posts

Rails consoleというものがある

$ rails console // 起動

Rails consoleからテーブルへデータをinsertする

$ rails console
[1] pry(main)> url1 = Url.new(url: "https://google.com")
[1] pry(main)> url1.save // transactionをsaveする

テーブルの一番最初のレコードを取得する

a = Table.firstでインスタンスを取得する
a.url で中身を確認できる
これをサービスモデルで取得して、Controllerからサービスモデルを呼び出させるようにするのがいいかな?

どのページでも表示したいHTMLはapplication.html.erbに書いておく

<%= yield %> に値するとこに、views配下に入っているファイルが生成される。Laravelだ。

link_toでanchorをリプレイス

link_to("文言", "設定したルーティングパス") => <a href="設定したルーティングパス">文言</a>

rails consoleでモデル経由でデータ確認

find_by(id:1) とかで検索かける
ちなみに、割とrails consoleはよく使われるらしい。

ルーティングでパラメータ設定

Rails.application.routes.draw do
  get "tests/:id" =>  "tests#show"
end

これで /tests/1 とかで、アクセスできるようになるけども、本来予期した普通のルーティングより下に書かないとノイズになって変にハマる。

文字列内の変数展開

"/posts/#{post.id}" @ はつけない。

フォーム生成

form_tag("パス") do

リダイレクト

redirect_to("パス")

0
0
0

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
0
0