勘誤表

如果發現內容有誤或有任何問題,歡迎直接來信,或在該章節頁面下方留言 :)

第 48 頁:

原文:

在 Rails 裡可使用 includes 方法來減少不必要的資料庫查詢。把原來 PostController 的 index action:

更正:

在 Rails 裡可使用 includes 方法來減少不必要的資料庫查詢。把原來 PostsController 的 index action:

第 53 頁:

原文:

像這樣的環境我們又稱之 REPL(Real-Eval-Print Loop)。

更正:

像這樣的環境我們又稱之 REPL(Read-Eval-Print Loop)。

第 83 頁:

原文:

  friends = ["魯夫", "孫悟空", "黑崎一護", "旋渦嗚人"]
  puts friends.first     # =>
  puts friends.last      # => 旋渦嗚人

更正:

  friends = ["魯夫", "孫悟空", "黑崎一護", "旋渦嗚人"]
  puts friends.first     # => 魯夫
  puts friends.last      # => 旋渦嗚人

漏了魯夫

第 117 頁:

原文:

更多細詳內容將會於 MVC(Model, View, Controler)章節再做說明。

更正:

更多細詳內容將會於 MVC(Model, View, Controller)章節再做說明。

第 119 頁:

原文:

依據方法作用的對不同,有分實體方法(instance method)及類別方法(class method),舉個例子來說:

更正:

依據方法作用的對不同,有分實體方法(instance method)及類別方法(class method),舉個例子來說:

第 159 頁:

原文:

動詞 Prefix 路徑 Controller Aciton 說明
GET users /users UserController index 使用者列表
POST users /users UserController create 新增使用者
GET new_users /users/new UserController new 新增使用者頁面
GET edit_users /users/:id/edit UserController edit 編輯使用者頁面
GET user /users/:id UserController show 檢視單一使用者
PATCH user /users/:id UserController update 更新使用者
PUT user /users/:id UserController update 更新使用者
DELETE user /users/:id UserController destroy 刪除使用者

更正:

動詞 Prefix 路徑 Controller Aciton 說明
GET users /users UsersController index 使用者列表
POST users /users UsersController create 新增使用者
GET new_user /users/new UsersController new 新增使用者頁面
GET edit_user /users/:id/edit UsersController edit 編輯使用者頁面
GET user /users/:id UsersController show 檢視單一使用者
PATCH user /users/:id UsersController update 更新使用者
PUT user /users/:id UsersController update 更新使用者
DELETE user /users/:id UsersController destroy 刪除使用者
  1. new_users 修正為 new_user
  2. edit_users 修正為 edit_user
  3. UserController 修正為 UsersController

第 210 頁:

原文:

以上實作完整程式碼可在 https://github.com/kaochenlong/bmi_calculator 取得。

更正:

以上實作完整程式碼可在 https://github.com/kaochenlong/my_candidates 取得。

第 216 頁:

原文:

  class Candidate < ApplicationRecord
    has_many :vote_logs
  end

更正:

  class Candidate < ApplicationRecord
    has_many :vote_logs, dependent: :destroy
  end

後面加上 dependent: :destroy 參數的原因,是當如果要刪除候選人資料的時候,那些投給它的票也可以順利被刪除。

第 222 頁:

原文:

  def vote
    @candidate.increment(:votes)
    @candidate.save
    redirect_to candidates_path, notice: "完成投票!"
  end

更正:

  def vote
    @candidate.vote_logs.create(ip_address: request.remote_ip) if @candidate
    redirect_to candidates_path, notice: "完成投票!"
  end

第 228 頁:

原文:

以上實作完整程式碼可在 https://github.com/kaochenlong/bmi_calculator 取得。

更正:

以上實作完整程式碼可在 https://github.com/kaochenlong/my_candidates 取得。

第 308 頁:

原文:

透過 mailer 產生器,建立了一個 ContactMailer 類別以及 app/views/contact_mailer 目錄。先看一下 app/mailers 目錄,現在裡面應該有 2 個檔案,檔名分別是 application_mailer.rbcontact_mailer.rb。打開看一下 application_mail.erb 檔案的內容:

更正:

透過 mailer 產生器,建立了一個 ContactMailer 類別以及 app/views/contact_mailer 目錄。先看一下 app/mailers 目錄,現在裡面應該有 2 個檔案,檔名分別是 application_mailer.rbcontact_mailer.rb。打開看一下 application_mailer.rb 檔案的內容:

第 380 頁:

原文:

如此一來,透過 Cart 類別的 add_item 方法,把 A 商品加到購物車裡,拿出來之後還是 A 商品,而不是放蘋果進去,結拿出來變香蕉。

更正:

如此一來,透過 Cart 類別的 add_item 方法,把 A 商品加到購物車裡,拿出來之後還是 A 商品,而不是放蘋果進去,結拿出來變香蕉。

第 398 頁:

原文:

<h1>購物車</h1>
...[略]...
  <tfood>
  <tr>
    <td colspan="3">總計</td>
    <td><%= current_cart.total_price %></td>
  </tfood>
...[略]...

更正:

<h1>購物車</h1>
...[略]...
  <tfoot>
  <tr>
    <td colspan="3">總計</td>
    <td><%= current_cart.total_price %></td>
  </tfoot>
...[略]...

<tfood> 標籤修正為 <tfoot>