DUVER Tips

Unity,Unreal Engine,XR関係のblog

Ruby on Rails忘備録

RubyonRailsを始めたのでその忘備録

Rubyを始めましたが、学習していく過程の個人のメモになります。

プロジェクトの作成

プロジェクトの作成はコマンドで簡単に行う事ができます

ruby new hogehoge

hogehogeの部分はプロジェクト名になります

ruby g controller home top

コントローラーとホームファイル、top.html.rbファイルを自動で作成してくれます。

Rubyでは、Ruby on Railsの設計思想に基づいて、プログラムを作成していきます。

主に、コントローラー、アクション、ルーティングという三つがあります。

ルーティング

URL コントローラー アクションの対応表のこと

コントローラーの役割

コントローラーを介してviewを返す。
関数や変数の記述はここに

ビューの役割

htmlファイルを表示します

全体の流れはブラウザールーティングーコントローラーービュー
という流れになります。

ページ内リンクの作成

ページ内リンクを作成する場合は通常のhtmlと同様,aタグのリンクを作成して
更にルーティングのファイルに記述を追加する必要があります.

<a href="/">

//以下ルーティングファイル
get "/"=>"home#top"

<% link_to("About","/about") %>

第一引数に表示する文字,第二引数にURLを記述する.

DB操作

新しいテーブルの作成。下記はUseテーブルの作成.

コマンドでマイグレーションファイルを作成しデータベースに変更を反映する.

rails g model User name:string email:string
rails db:migrate
データの追加
rails console 
user = User.new(name:"name" email:"emailaddress");
バリデーション

このままだと、空の状態でデータベースを作成できてしまうので
バリデーションと呼ばれる、データに制限を持たせることができる。

テーブルの作成した際に、Userクラスが作成されているので、その中でバリデーションを設定することができる
以下の記述は同じ値を登録できないようにするためのもの。
presenceを追加すると空の値を入力不可になる。

class User < ApplicationRecord
  validates:email,{uniqueness:true}
 validates :email, {presence: true, uniqueness: true}
end

Rails console

rails consoleコマンドでレイルズのコンソールを起動することができる

ユーザー投稿機能の作成

find_byメソッド

データベースのIDから特定のidを拾ってくることができる.

post=Post.find_by(id:3)

find_byメソッドを用いて投稿の一覧ページを作る

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

//Controller側
def show
  @post=Post.find_by(id: params[:id])
end

//show.html側
<div class="sample">
  <%=post.content%>
<div class="Hoge">
  <%= post.created_at %>
</div>
</div>
<% @posts.each do |post| %>
 <div class="post-item">
    <% link_to(post.content,"/post/#{post.id}") %>
</div>
<%end%>

viewからデータベースに書き込み投稿をする

form_tagメソッドを利用することでデータを投稿したりできる.

指定したURLはルーティングファイルのpostのurl

<%=form_tag("post/create") do %>
<textarea name="content"></textarea>
<input type="submit" value="投稿">
<%end%>
Redirectの仕組み

指定のURLにリダイレクトされる.
viewを作る必要がなくなる.

def create
@post=Post.new(content:params[:content])
@post.save
redirect_to("/posts/index")
end