Ruby on Rails忘備録
RubyonRailsを始めたのでその忘備録
Rubyを始めましたが、学習していく過程の個人のメモになります。
プロジェクトの作成
プロジェクトの作成はコマンドで簡単に行う事ができます
ruby new hogehoge
hogehogeの部分はプロジェクト名になります
ruby g controller home top
コントローラーとホームファイル、top.html.rbファイルを自動で作成してくれます。
Rubyでは、Ruby on Railsの設計思想に基づいて、プログラムを作成していきます。
主に、コントローラー、アクション、ルーティングという三つがあります。
ルーティング
URL コントローラー アクションの対応表のこと
コントローラーの役割
コントローラーを介してviewを返す。
関数や変数の記述はここに
ページ内リンクの作成
ページ内リンクを作成する場合は通常の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
ユーザー投稿機能の作成
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