ビューヘルパー form_for
RESTfulな使い方では、一つのフォームパーツを登録と編集で使いまわすことができるのですね。例えば、以下のフォーム記述。
form_for で作ったフォームは、引数にとるモデル@bookの内容によって、送り方が変わる。
@bookが空の場合は、 action="/books", HTTPメソッドがPOST
空でない場合は、action="/books/1"、HTTPメソッドがPUT(疑似)
となる。
"/books" 、HTTPメソッドがPOSTに対しては、createアクションが呼ばれる。
"/books/1" 、HTTPメソッドがPUTに対しては、updateアクションが呼ばれる。
これで、formを共通化しても、登録と編集とで使えるわけね。
<%= form_for(@book) do |f| %> <% if @book.errors.any? %> <div id="error_explanation"> <h2><%= pluralize(@book.errors.count, "error") %> prohibited this book from being saved:</h2> <ul> <% @book.errors.full_messages.each do |msg| %> <li><%= msg %></li> <% end %> </ul> </div> <% end %> <div class="field"> <%= f.label 'ISBNコード' %><br /> <%= f.text_field :isbn %> </div> <div class="field"> <%= f.label 'タイトル' %><br /> <%= f.text_field :title %> </div> <div class="field"> <%= f.label '値段' %><br /> <%= f.text_field :price %> </div> <div class="field"> <%= f.label '出版社' %><br /> <%= f.text_field :publish %> </div> <div class="field"> <%= f.label '発行日' %><br /> <%= f.date_select :published %> </div> <div class="field"> <%= f.label :cd %><br /> <%= f.check_box :cd %> </div> <div class="actions"> <%= f.submit '登録' %> </div> <% end %>