首先打開config/route.rb 設定專案的路由路徑
加入 resources :guests
並將 localhost:3000/guests 設定為首頁 => 加入root 'guest#index'
為了要在index列出所有資料,編輯controller/guests_controller.rb加入:
def index
@guest = Guest.all
end
Guest.all會抓出所有的資料,回傳一個陣列給實例變數(instance variables)指派給 @guest
在Rails會讓Action裡的實例變數(也就是有@開頭的變數)通通傳到View樣板裡面可以使用。這個Action預設使用的樣板是app/views/guests/目錄下與Action同名的檔案,也就是接下來要編輯的app/views/guests/index.html.erb,修改內容如下:
<ul>
<% @guest.each do |guest| %>
<li>
<%= guest.title %>
<%= link_to 'Show', :controller => 'guests', :action => 'show', :id => guest %>
<%= link_to 'Edit', :controller => 'guests', :action => 'edit', :id => guest %>
<%= link_to 'Delete', :controller => 'guests', :action => 'destroy', :id => guest %>
</li>
<% end %>
</ul>
<%= link_to 'Add post', :controller => 'guests', :action => 'new' %>
這邊@guest.each do |guest| 的意思是 @guest這個實例變數(目前是陣列)的每一個欄位都要執行一次do到end中間的程式,也就是先印出每則貼文的title,並在後方加上連到show、edit、destroy這三個action的link。
<%= link_to 'Show', :controller => 'guests', :action => 'show', :id => guest %>
這行轉成html就是
<a href="guests/show/guest.id"> Show </a>
*編輯修正10/6:修正link_to這邊的:id 應為 => guest,而非@guest