2013-05-03 44 views
0

我在課堂上遇到了更新問題。RoR ruby​​ - 未定義的方法`model_name'爲NilClass:Class

這是視圖:

<div id = "list"> 
     <%= form_for @list do |form| %> 
     <%= render 'shared/error_messages', object: form.object %> 
     <div class="list_fields"> 
     <%= form.text_field :name, placeholder: 

,這是控制器:

 def update 
     if @list.update_attributes(params[:list]) 
      flash[:success] = "List updated" 
     else 
      render 'edit' 
     end 
     redirect_to @list 
    end 

的路線是:

 resources :lists, only: [:create, :show, :destroy,:edit] 

現在的問題是,它不斷提高

 "undefined method `model_name' for NilClass:Class" 
      in line 2 ---> <%= form_for @list do |form| %> 

而我似乎無法弄清楚爲什麼。 在此先感謝 獅子座

+0

你知道'<%= form.text_field:name,placeholder:'是不完整的,對嗎? – 2013-05-03 09:12:34

+0

是的,它只是代碼的一部分 – Fairglen 2013-05-03 09:15:11

回答

1

您必須先加載@list,然後再更新其屬性。

def update 
    @list = List.find_by_id(params[:id]) 
    if @list.update_attributes(params[:list]) 
    flash[:success] = "List updated" 
    else 
    render 'edit' 
    end 
    redirect_to @list 
end 

順便說一句,你看到的問題不是由你的更新動作,但通過重定向到這個看你的編輯操作引起的。

您必須在兩個操作中加載@list。在編輯操作中爲了渲染視圖,在更新操作中爲了更新適當的對象。

+0

我愛你,謝謝= D – Fairglen 2013-05-03 09:21:32

+0

不客氣。您可以將您的問題標記爲已回答。 – 2013-05-03 09:23:20

+1

你可以簡化第一行:@list = List.find(params [:id]) – Mattherick 2013-05-03 11:03:34

相關問題