LotosLabo

プログラミング技術とか気になった情報を載せていきます

Ruby on Rails 4.0について6

編集フォームを作成していきます。
TOPのp1、p2の項目を編集するフォームを作成します。
具体的なフォームは新規作成したフォームのレイアウトと同じになります。

編集フォーム

index.html.erb を編集します。

項目の横に [Edit] というテキストを追加し、リンクも作成します。

f:id:lo25131:20140221205708j:plain




f:id:lo25131:20140221205638j:plain



続いてリンクの飛び先を作成します。

projects_controller.rb を編集します。


f:id:lo25131:20140221210718j:plain



続いてviewを作成します。編集フォームのレイアウトになります。
こちらは新規作成フォームと同じレイアウトなので、new.html.erbを複製してタイトルだけ変更します。

編集フォームはこのようになりました。

f:id:lo25131:20140221210802j:plain



次に編集ボタンを押した時に更新できるようにします。

更新処理

今回は update というのを作っていきます。


projects_controller を編集します。


f:id:lo25131:20140221211046j:plain


ここでもセーブがうまく行けばTOPに戻り、失敗すれば編集画面にとどまったままという処理をします。

共通部分を作る


そして今回、編集画面と新規作成画面のレイアウトを一緒にしたのには大事な理由があります。

DRY

という規則があります。これはDon't repeat yourselfという重複を防ぎ画面遷移時に使用者が困難に陥らないためにも決められているものです。

そして今回レイアウトを一緒にしたのは一つにまとめるためです。

これを パーシャルと言います。

プロジェクトのviewファイルの中に共通ファイルの元となるものを作ります。

今回は _form.html.erb というのを作ります。基本的に最初に_(アンダバー)を付けます。


f:id:lo25131:20140221212140j:plain


そして次に、edit.html と new.htmlを編集します。


edit.html.erb

f:id:lo25131:20140221212238j:plain


new.html.erb


f:id:lo25131:20140221212244j:plain


このように短い文章だけで共有できます。



データの削除

index.html.erb を編集します。


f:id:lo25131:20140221212550j:plain


[Edit]の横に[Delete]というのを作成し、リンクも作成します。


次にコントローラーにアクションを追加します。

contoroller を編集します。

f:id:lo25131:20140221212832j:plain


とりあえずp1とp2を削除しました。

f:id:lo25131:20140221213032j:plain



ここまで来ればフォームの機能はすべて完成しました。
しかし、Don't repeat yourselfに従うとコードが重複している所があるのでまとめていきます。


before_actionを使う


controller を編集していきます。

一番上にこの文章を追加します。

f:id:lo25131:20140221213614j:plain


set_projectというメソッドを作成し、それに共通部分を作成していきます。

いくつかのメソッドに重複している部分がありますのでそれをset_projectメソッドにまとめていきます。



そしてprivateの部分に

この文章も作成し、重複している部分をここに書きます。

f:id:lo25131:20140221213602j:plain


そして各メソッドにこの処理が書かれているところを削除すれば完成です。




Railsの紹介はこれで終わりです、今後時間があればRailsを使って、ランキング画面とかを作成していきたいですね。