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

プログラミング学習(二日目) ProgateでRuby On Rails レッスン2

Last updated at Posted at 2019-08-26

今日学んだこと

htmlファイルにRubyの埋め込み方と、変数の定義

拡張子を.html.erbとすると、htmlファイルにRubyのコードを埋め込める

erbとは「Embedded ruby(埋め込みRuby)」の略
具体的には<% %>で囲むと、ブラウザには表示されず、
<%= %>で囲むと、ブラウザに表示される。

また、Railsでは変数はビューファイルではなくアクションで定義するのが一般的。
アクション内で@を先頭につけることによって、ビューファイルでも使えるようになる。
こんな感じ

posts_controller.rb
def index
 @moneys=["yen", "us", "rupee"]
end
index.html.erb
<% @moneys.each do |money| %>
<%= money %>
<% end %>

Railsでのデータベースの扱い方

データベースにデータを保存するには、テーブルを作る必要がある。(今回はpostsテーブルとする)
ちなみに縦の列を「カラム」、横の行を「レコード」という。

postsテーブルを作成する手順

①データベースに変更を指示する「マイグレーションファイル」を作成する
②データベースに変更を反映

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

$rails generate model Post content:text

と入力。それぞれの意味は、
「Post」は「posts」テーブルを作成するために単数形で宣言。モデル名。
「content:」はカラム名
「text」はデータ型。この場合は、長い文字列を意味する。

そして上のコマンドで
アプリケーション名/db/migrate/ に、マイグレーションファイルができる。内容はまだ理解しなくていいらしい?

次に、

$rails db:migrate

で、マイグレーションファイルを使い、データベースに変更を反映してpostsテーブルを作る。
この時、「id」、「created_at」、「update_at」カラムが作られるが、意味は
「id」がデータベースに入れられた順につけられる番号
「created_at」がデータベースに保存された時間
「update_at」が更新された時間

ちなみに、データベースに反映されてないマイグレーションファイルが存在すると、マイグレーションエラーが起こるので注意。

テーブルの操作方法

$rails g model Post content:text
で、postsテーブルを操作するためのPostモデル(モデルはクラス)が生成されるので、このPostモデルを使って操作する。
このモデル(クラス)は上記のコマンド時に
app/models/post.rb(ファイル名は単数形)
に生成される。

post.rb
class Post < ApplicationRecord
end

このように「ApplicationRecord」を継承したクラスをモデルという。
このモデルを使ってテーブルを操作する。

rails consoleの使い方

コンソールで
$rails console
と打つだけ。Rubyのコードを手軽に実行できるやつ。irbと似てる?。quitで終了。

Postモデルを使い、データベースのpostsテーブルにデータの追加方法

①newメソッドで、Postモデルのインスタンスを生成。
②saveメソッドを使い、postsテーブルに保存

まず①から
rails console上でも.rbファイル上でもいいが、今回はrails console上で行う。

$rails console
    ・
    ・
>post = Post.new(content:"Hello World")
これはcontentが"Hello World"のPostインスタンスを生成し、変数postに代入している。
そして、②の保存は
>post.save
で行う。
saveメソッドが使える理由は、「ApplicationRecord」クラスを継承しているため。

データベースからデータの取り出し方

>post=Post.first
>post.カラム名
で、一行目の指定してカラムのデータを取り出せる

>post=Post.all
で、postsテーブルのすべてのデータを配列として取得可能。

>Post.all[0]
で、idが1のレコードを取得可能。さらに
>Post.all[0].content
で、idが1(一行目)のcontentカラムのデータが取得できる。

このデータの取得は、コントローラのアクション内でも利用可能。

共通のレイアウトのまとめ方

Railsでは、「views/layouts/application.html.erb」に共通のHTMLを書いておける。
これの原理は、application.html.erbには**<%= yield%>**というコードがあり、各ビューファイルはこのコードに代入され、
application.html.erbの一部としてブラウザに表示されるので。

link_toメソッド

link_toメソッドはRubyのコードで、**<%=%>**コードで記述する。そうするとHTMLのaタグに対応する。
<%= link_to("投稿一覧", "/about") %>

<a href="/about>投稿一覧</a>

思ったより書く時間がかかったので、これからはもう少し端折ります。

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?