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
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-