ドットインストールでRails学んでみました。といっても2回めです。200日前くらいに一回終了させていて、その後Railsあまりいじっていなかったので。あと2週間位Web側の基礎知識学んだらサービスなんか作ってみよう。
また、ちょっと気になったことや覚えておきたいことをメモしていくスタイルで書いていきます。
一番簡単なサイト作成手順
$ rails new myapp $ rails cd myapp $ rails generate scaffold User name:string score:integer $ rake db:migrate
とりあえずこれで、/users
などの画面が作成される。
gemのインストールをスキップする
既に必要なライブラリがインストールされているならばこれをすると速い。
$ rails new taksapp --skip-bundle
db
$ rails db
: 今使っているdbにアクセスできる$ rails console
: インタラクティブにdbをいじれる。$ Project.new
: 新規追加。$ Project.create
: newとsaveを一緒にやってくれる。
routes
$ rake routes
: ルーティングを表示する。
書き方はroutes.rb参照。
便利メソッド
image_tag "logo.png"
と書くと、app/assets/images
を見に行ってくれる。link_to "Home", "/"
と書くと/
にリンクを張ってくれる。link_to "Home", projects_path
と、rake routes
で表示されるPrefixに_path
をつけるとそこへのリンクを張ってくれる。
フォーム
相当シンプルな作り方。
<h1>Add New <%= form_for @project do |f| %> <p> <%= f.label :title %><br> <%= f.text_field :title %> <%= @project.errors.messages[:title][0] %> # エラーを出力する </p> <p> <%= f.submit %> </p> <% end %>
// create メソッド def create @project = Project.new(project_params) @project.save redirect_to projects_path end // projectから渡ってきたものの中からtitleだけ取り出す def project_params params[:project].permit(:title) end
バリデーション
モデルに書く。
class Project < ActiveRecord::Base validates :title, presence: true end
controllerではsaveに成功したら一覧に戻る。失敗したらnewに戻るというように書いておく。
def create @project = Project.new(project_params) if @project.save redirect_to projects_path else render 'new' end end
その他
controllerでは渡ってきた値をparamsで取得できる。下記の例の:id
というのはroutesで確認できる。
def show @project = Project.find(params[:id]) end