aya nakahara

生活について考えるブログ

Ruby(on Rails) Challenge(Day 2)

Day1: 

amyamyamy.hatenablog.jp

 

Day1の疑問を調べた回:

amyamyamy.hatenablog.jp

 

 前回のおさらい

Day1ではProgateでRailsチュートリアルに取り組み、その後疑問に思ったことを調べました。また、ネクストアクションとして以下を掲げていました。

  • 上記の疑問点を解決してブログに結論を書く
  • Progateの残りのレッスンを修了する

 

今回やること

今回はさらにProgateRuby on Railsチュートリアルを進めます。

Ruby on Railsのレッスンは全15回

あり、今回は9回まで進めました。

 

 

 はじめに

Ruby on Railsを使うときに大事な考え方を簡単に図に起こしてみました。

シンプルなRuby on Railsのサイクル

Shimple Rails Request-Response Cycle

さらに詳しい図もありました。

Rails apps use an MVC architectural pattern

Rails apps use an MVC architectural pattern

引用: 

medium.com

 

これらは、チュートリアルを進めていくと理解できます。

処理内容は違えど、基本やることは同じだからです。 

 

 

コマンド備忘録

プロジェクト新規作成

$ rails new フォルダ名

ローカルサーバー立ち上げ

$ rails server

viewとcontrollerを新規作成

$ rails generate controller {controller_name} {action_name}

app/controller/{controller_name}.rb

app/views/{controller_name}/{action_name}..html.erb *

app/assets/stylesheet/{controller_name}.scss

が作成される

 

* erbは「Embedded Ruby(埋め込みRuby)」の略

 

rootingの書き方

get "/" => "{controller_name}#{action_name}"

 左辺はページのパス、右辺はコントローラー名#アクション名

getはHTTPメソッド名なのでpostとかにもできる

 

テーブル(モデル)とmigrationを作成する

$ rails g model Model colomn:型

 db/migrate/日付_create_models.rb

app/models/models.rb

が作成される

 

migrationのみ作成する(テーブルにカラムを追加したい時)

$ rails g migration colomn:型

 migrationファイルのchangeメソッドにテーブルにカラムを追加する処理を書く。

def change
add_column :{table_name}, :{column_name}, :型
end

migrationファイルのchangeメソッドの中身を実行するコマンドを実行する。

$ rails db:migrate

 

urlの値を参照する

## routes.rb
get "/article/:id" => "article#find"


## controller
@page_id = params[:id]
## params = {id: 1} のようにparamsに入っている。

 

フォームの中身をcontrollerで受け取る

## view
<%= form_tag("/article/create") do %>
<div class="article_form">
<input name="content">
<input type"submit">
</div>
<% end %>


## controller
def create
@form_content = params[:content]
## フォームの内容がname属性の値をキーにしたハッシュとして送られる。
## params = {content: フォームの内容}
end

 

リダイレクトさせる

redirect_to("ページパス")

 

 

その他、手打ちするにはしんどいコマンドがたくさん出てきたので

Clipyに全て保存して呼び出すようにしました。

ClipyにRaillのコマンドを登録して呼び出せるようにした

ClipyにRaillのコマンドを登録して呼び出せるようにした

 

 

clipy-app.com


 

 

疑問に思ったこと/追加で調べたいこと

  • renderがあまり理解できていない

今回は、フォーム送信をしてテーブルに保存できなかった場合は入力内容が更新されないようにする為に使用した。

  • 単体テストはどこに書くんだろう
  • railsのテーブルではないDBに保存するときはどうやるのがいいのか
  • scssのビルドはどこでどのように行なっているのか

 

 

ネクストアクション

  • 上記の疑問点をDay1と同じように調べてブログに書く
  • Progateのチュートリアル終わらせる
  • 簡単に何か作ってみる(ブログ投稿サイトがいいなー)