0

我在更新课程时遇到问题。

这是视图:

    <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| %>

我似乎无法弄清楚为什么。提前感谢狮子座

4

1 回答 1

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。在编辑动作中为了呈现视图,在更新动作中为了更新适当的对象。

于 2013-05-03T09:15:15.687 回答