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
ルーティングの確認
#11 Projectsの詳細を表示しよう
446 emacs app/views/projects/index.html.erb
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の関数を実装。
<%= link_to "Add New", new_project_path %>
459 cp app/views/projects/index.html.erb app/views/projects/new.html.erb
460 emacs app/views/projects/new.html.erb
newのviewを作成。
#13 データを保存してみよう
463 emacs app/controllers/projects_controller.rb
create関数の定義。
外部からの入力はサニタイズするため(?) params に一旦permitをかませる。
455 emacs app/controllers/projects_controller.rb
newの関数を実装。
def new457 emacs app/views/projects/index.html.erb
@project = Project.new
end
<%= link_to "Add New", new_project_path %>
を追加して /projects/new へのリンクを作成。
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
コメント
コメントを投稿