僕とコードとブルーハワイ

omega (@equal_001) の日記

Head First Rails 頭とからだで覚えるRailsの基本 エラーで困ったこと

O'REILLYから出ている「Head First Rails 頭とからだで覚えるRailsの基本」を読み進めているのだけど、
Rails 2以下で採用されていた記述法で書かれているため、何度かエラーを返されてしまいました。
(私はRails 3を使っています)

一応、何処がどう違ったのか、問題にぶち当たり次第メモしてく



●アプリケーション新規作成のコマンド

> rails new アプリケーション名

●サーバ起動コマンド

>rails server

ちなみに、serverは s と省略可能

>rails s

●scaffoldコマンド

>rails generate scaffold ...

全体的に、
ruby script/ と書くところを rails と書くというカンジ。


●routeの設定方法1
Rails 2の記述

map.connect '/ads:id', :controller=>'ads', :action=>show'

Rails 3の記述

resources :ads

●routeの設定方法2
Rails 2の記述

map.connect'/ads/:id/edit',:controller=>'ads',:action=>'edit'
map.connect'/ads/:id/update',:controller=>'ads',:action=>'update'

Rails 3の記述

match 'ads/:id/edit', :to => 'ads#edit'
match 'ads/:id/update', :to=> 'ads#update'

●2章で使うdefault.cssの画像参照パスが違う

./bg.png
./bgHeader.png
./logo.png
./bgFooter.png

上記のように変更しないとトップページが寂しいことになる。


●バリデータのエラーメッセージ記述(p212)
変更前

<%= f.error_messages %>

変更後

<% if @ad.errors.any? %>
  <ul>
    <% @ad.errors.full_messages.each do |msg| %>
      <li><%= msg %></li>
    <% end %>
  </ul>
<% end %>

●記述ミス?と思われるもの
adコントローラのupdateメソッドの中身、redirect_toの指定部分に@が無い(p139)

  def update
    @ad = Ad.find(params[:id])
    @ad.update_attributes(params[:ad])
    redirect_to"/ads/#{@ad.id}"
  end

show、edit.html.erbとか、色々なところで出てくる間違い

<% form_for...  ....%> となっているところを、<%= form_for... ...%> とする。
                                                                                                                                            • -

お世話になったサイト様
http://irohiroki.com/2010/08/29/rails3-routes

                                                                                                                                            • -