1
0

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 3 years have passed since last update.

Ruby on Rails 初歩

Posted at

Ruby on Rails 初歩

MVCに沿った初歩的なことを学習した。

参考:Progate Ruby on Rails

  • この記事を読むにあったって必要になりそうな知識
    • HTMLの知識
    • Ruby基礎
    • SQLの基礎

プロジェクト作成

#プロジェクト作成
$rails new アプリケーション名前


#サーバーを立ち上げる localhost:???? でアクセス
$rails sever 


#コントローラを作成する
#rails generate controller コントローラ名 アクション名
$rails generate controller home top

            
            #localhost:????/home/top   
            #コマンドによってページが自動生成される

##Controller

アプリケーション名/app/controller/controller.rb

Homecontrollers.rb
class HomeController < ApplicationController

  def top
  end

end

アプリケーション名/config/routes.rb

routes.rb
Rails.application.routes.draw do

 get"home/top" => "home#top"
     #URL           コントローラー名#アクション名
end

##実際に使用する
localhost:????/ranking にアクセスを行えるようにする

遷移先にrankingを作ってみる
つまり
localhost:????/ranking でアクセスを行えるようにURL遷移をさせる処理の記述をしてみる

Homecontrollers.rb
class HomeController < ApplicationController

  def top
  end

  #対応するルーティング、アクションを追加 ここではranking
  def ranking 
  end

end

##ルーティングを表にするとこんな感じになります。

URL コントローラ アクション
home/top home top
ranking home ranking
routes.rb
Rails.application.routes.draw do

 get"home/top" => "home#top"

#     URL    コントローラー名#アクション名 
get"ranking" => "home#about"


end

##View
html.erbで記述をする
Rubyをhtml.erbに記述する方法
感想:原則は使わないほうがいい?コードの可視性が悪くなるかも

例:リストをループさせる

html.erb
<%
lists = [
        "good",
        "bad"
]
%>


<% lists.each do|list|% >

   <div class="list">
     <% list %>
   </div>
<% end %>

###Controllerに変数を格納して実行する場合

Homecontrollers.rb
class HomeController < ApplicationController

   #@をつけること
  def top
     @lists = [
        "good",
        "bad"
     ]
  end

end
html.erb

<% @lists.each do|list|% >

   <div class="list">
     <% list %>
   </div>
<% end %>

##DBの準備 Model
マイグレーション DBのがわかるコードに変換
可能であればSQL文
[SELECT, INSERT, UPDATE, DELETE ]
が書けると理解が早いかもしれないです。

#rails generate これ長いから g でOKです

$rails g model Post contents:text

              #Post・・・・・・・・posts usersなど複数形を作成する場合は単数形で
              #content:・・・カラム名
              #text・・・・・・・・データ型

上記を実行した時刻で作成される
アプリケーション名/db/migrate/yyyymmddhhmmss_create_posts.rb

中身

posts.rb
class CreatePosts < ActiveRecord::Migration[5.0]
  def change
    create_table :posts do |t|
      t.text :content

      t.timestamps
    end
  end
end

##エラー
###ActiveRecord::PendingMigrationError
$rails db:migrate を実行することでエラーは解決するかと思います。

マイグレーションファイルが存在する状態で、ページにアクセスすると
マイグレーションエラーが発生する。

##rails console について
対話型で処理が書ける

$rails console

>post = Post.new(content:"test")
       #Postインスタンス生成
       #postsテーブルのcontentにtestを

>post.save 
#Postインスタンスをテーブルに保存
#DB Contentカラムに保存される

>quit 終了

##テーブルからデータを取り出す処理

$rails console
>post = Post.first
>post.content

>posts = Post.all
# SELECT "posts".* FROM "posts"

>posts[0]
 #id: 1,
 #content: "内容",
 #created_at: Thu, 29 Oct 2020 16:14:30 JST +09:00,
 #updated_at: Thu, 29 Oct 2020 16:14:30 JST +09:00>

> posts[0].content
=># "内容"
Homecontrollers.rb
class HomeController < ApplicationController

   #@をつけること DBから情報を取得する
  def top
     @posts = Post.all

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?