2015-06-03 66 views
0

在我index.html.erb文件,這大量的代碼工作:Ruby on Rails的,控制器似乎不被鏈接到瀏覽

<% if Restaurant.all.any? %> 
    <% Restaurant.all.each do |restaurant| %> 
    <h2><%= restaurant.name %></h2> 
    <% end %> 
<% else %> 
    <h1>No restaurants yet!</h1> 
<% end %> 

<a href='#'>Add a restaurant</a> 

然而,當我控制器更改爲這樣:

class RestaurantsController < ApplicationController 
    def index 
    @restaurants = Restaurant.all 
    end 
end 

index.html.erb文件到這一點:

<% if @restaurants.any? %> 
    <% @restaurants.each do |restaurant| %> 
    <h2><%= restaurant.name %></h2> 
    <% end %> 
<% else %> 
    <h1>No restaurants yet!</h1> 
<% end %> 

<a href='#'>Add a restaurant</a> 

所有通過測試的,因爲現在的失敗改變,我不能爲了我的生活找出他們爲什麼不工作。運行測試時,該錯誤信息是:

Failure/Error: visit '/restaurants' 
ActionView::Template::Error: 
    undefined method `any?' for nil:NilClass 

我的routes.rb文件如下:

Rails.application.routes.draw do 
    resources :restaurants 
end 
+0

讓我看看你的路由文件。 –

+0

你做了'rake db:create && rake db:migrate' –

+0

問題與「@restaurants」對象有關。請檢查爲什麼@餐廳的價值爲零。 –

回答

1

其實問題是,你的指數是直接調用而不去控制器。因此,早些時候您的"Restaurant.all"可以正常工作,但現在變更新的更改@restuanants爲空,並且您應用了null.any?。它給出了錯誤。 嘗試

<% if @restaurants && @restaurants.any? %> 

<% unless @restaurants.blank? %> 
+0

你是怎麼得到的?他是怎麼試着的? –

+0

因爲如果請求來自控制器,則Restaurant.all返回空白數組。 []。任何?正確運行。 –

+0

使用.blank?總是一個很好的做法,因爲它檢查零和空都 –

1

試試這個,我希望這將有助於

index.html.erb

<% unless @restaurants.blank? %> 
    <% @restaurants.each do |restaurant| %> 
    <h2><%= restaurant.name %></h2> 
    <% end %> 
<% else %> 
    <h1>No restaurants yet!</h1> 
<% end %> 

<a href='#'>Add a restaurant</a>