2014年8月20日水曜日

dotinstall:: Ruby on Rails4 のメモ

#05 タスク管理アプリを作ってみよう

  390  rails new taskapp --skip-bundle

一度インストールしたgemのskip

  391  cd taskapp/
  392  emacs Gemfile

therubyracerのコメントアウトを消す。
gem 'io-console' を追記する

  393  rails s

サーバー起動させて動作確認

  396  rails g model Project title

モデル生成。
頭文字は大文字、単数形。

  397  rake db:migrate

DBに反映させる

#06 rails db/rails consoleを使おう

  398  rails db

sqliteのインタラクティブシェル開く

  399  rails console

irb開く

#07 Controllerを作ってみよう

  401  rails g controller Projects

コントローラ生成

  403  emacs config/routes.rb

ルーティングの編集。
resources :projects を追記

  404  rake routes

ルーティングの確認



  407  emacs app/controllers/projects_controller.rb

こんなの作る
class ProjectsController < ApplicationController
  def index
    @projects = Project.all
  end
end

  408  touch app/views/projects/index.html.erb
  409  emacs app/views/projects/index.html.erb

こんなの作る

<h1>Projects</h1>
<ul>
  <% @projects.each do |project| %>
  <li> <%= project.title %> </li>
  <% end %>
</ul>
  410  rails s


  416  emacs config/routes.rb

root 'projects#index' を追記



  420  emacs app/views/layouts/application.html.erb

image_tagを追記

<!DOCTYPE html>
<html>
<head>
  <title>Taskapp</title>
  <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track' => true %>
  <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
  <%= csrf_meta_tags %>
</head>
<body>
<%= image_tag "logo.png" %>
<%= yield %>
</body>
</html>
  421  cd app/assets/images/
  422  wget http://cdn.appgiga.jp/files/2012/04/0e9fb148b4f53059c459b0839ee286f71.png
  423  ls
  424  mv 0e9fb148b4f53059c459b0839ee286f71.png logo.png

"logo.png"を適当に拾ってきて app/assets/images/に置く

  429  emacs app/assets/stylesheets/application.css
プロジェクト全体のcssファイル編集してみる。


  433  emacs app/views/layouts/application.html.erb

yield はクラス内の関数で吐かれるデータ。
<%= yield %>

projects_path は、rake routes でPrefix表示される文字列_pathとすれば、URI Patternに変換してくれることの確認。
<%= link_to "Home", "/" %>
<%= link_to "Home", projects_path %>

#11 Projectsの詳細を表示しよう

  446  emacs app/views/projects/index.html.erb

<h1>Projects</h1>
<ul>
  <% @projects.each do |project| %>
  <li> <%= link_to project.title, project_path(project.id) %> </li>
  <% end %>
</ul>
  450  emacs app/controllers/projects_controller.rb

showの振る舞いを追記。
paramsはURLから取れるデータ。idはDB上のメンバの番号?
class ProjectsController < ApplicationController
  def index
    @projects = Project.all
  end
  def show
    @project = Project.find(params[:id])
  end
end
  451  cp  app/views/projects/index.html.erb app/views/projects/show.html.erb
  453  emacs app/views/projects/show.html.erb

showのviewを生成。とりあえずコピーして編集。表示だけ。
<h1><%= @project.title %></h1>
#12 新規作成フォームを作ろう

  455  emacs app/controllers/projects_controller.rb

newの関数を実装。
  def new
    @project = Project.new
  end
  457  emacs app/views/projects/index.html.erb

<%= link_to "Add New", new_project_path %>
を追加して /projects/new へのリンクを作成。

  459  cp app/views/projects/index.html.erb app/views/projects/new.html.erb
  460  emacs app/views/projects/new.html.erb

newのviewを作成。
<h1>Add New<h1>
<%= form_for @project do |f| %>
<p>
  <%= f.label :title %><br>
  <%= f.text_field :title %>
</p>
<p>
  <%= f.submit %>
</p>
<% end %>

#13 データを保存してみよう

  463  emacs app/controllers/projects_controller.rb

create関数の定義。
外部からの入力はサニタイズするため(?) params に一旦permitをかませる。
class ProjectsController < ApplicationController
  def index
    @projects = Project.all
  end
  def show
    @project = Project.find(params[:id])
  end
  def new
    @project = Project.new
  end
  def create
    @project = Project.new(project_params)
    @project.save
    redirect_to projects_path
  end
  private
    def project_params
      params[:project].permit(:title)
    end
end


0 件のコメント:

コメントを投稿