2012-07-27 46 views
0

我試圖使我的狗形式,另一種觀點認爲在我的PetsController.index爲什麼當地人出席時仍然會出現model_name錯誤?

def index 
    @page_title = "Add Pets" 
    @title = "Add Pets" 
end 

但我得到的錯誤:

NoMethodError in Pets#index 

Showing C:/testapp/app/views/dogs/_form.html.erb where line #1 raised: 

undefined method `model_name' for NilClass:Class 

1: <%= form_for @dog do |f| %> 

寵物/ index.html.erb

<div class="tab-pane" id="tab4"> 
    <%= render "global/flash_message" %> 
    <%= render :partial => "dogs/form", :locals => {:dog => @dog } %> 
</div> 

我知道我可以做:

def index 
    @page_title = "Add Pets" 
    @title = "Add Pets" 
    @dog = Dog.new 
end 

但是當地人有什麼意義呢?有什麼缺失,所以我可以用DogsController代替它?

謝謝!

回答

4

如果@dog未在#index行動分配,那麼你在調用render :partial分配nildog地方。您可以將實例分配從動作中移出,並在您的索引視圖中執行(例如,:locals => {:dog => Dog.new},但它必須發生在某處)。

+0

+1,或者您可以像這樣<'%= form_for Dog .new do | f |%>'然後忘掉當地人 – stephenmurdoch 2012-07-27 02:53:11

+1

除了如果想在編輯頁面上重複使用相同的'_form'部分,你想使用現有的實例,而不是新的。 – 2012-07-27 02:54:56

+0

true,非常真實 – stephenmurdoch 2012-07-27 03:09:06