2013-05-03 55 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

相关问题