【问题标题】:NoMethodError in Home#index主页中的 NoMethodError #index
【发布时间】:2014-08-01 00:49:45
【问题描述】:

请帮助我。我不确定我的路线或复数是否有问题,但出现此错误并且不再知道该怎么办,已经在很多地方进行了研究,但一无所获。

我开始了一个迷你教程来设计并且它有效,登录有效。所以我想重用它并建立一个待办事项列表。

当我将部分渲染放到我希望他们保留字段以创建待办事项列表的位置时,会发生:

ActionView::Template::Error (undefined method `model_name' for NilClass:Class):
1: <%= form_for(@todo_list) do |f| %>
2:     <% if @todo_list.errors.any? %>
3:         <div id="error_explanation">
4:           <h2><%= pluralize(@todo_list.errors.count, "error") %> prohibited this todo_list from being saved:</h2>

路线:

 match 'dashboard' => 'home#dashboard'
 match 'register' =>'registration#register'
 root :to => 'home#index'

    new_member_session GET    /members/sign_in(.:format)       devise/sessions#new
            member_session POST   /members/sign_in(.:format)       devise/sessions#create
    destroy_member_session DELETE /members/sign_out(.:format)      devise/sessions#destroy
           member_password POST   /members/password(.:format)      devise/passwords#create
       new_member_password GET    /members/password/new(.:format)  devise/passwords#new
      edit_member_password GET    /members/password/edit(.:format) devise/passwords#edit
                           PUT    /members/password(.:format)      devise/passwords#update
cancel_member_registration GET    /members/cancel(.:format)        registration#cancel
       member_registration POST   /members(.:format)               registration#create
   new_member_registration GET    /members/sign_up(.:format)       registration#new
  edit_member_registration GET    /members/edit(.:format)          registration#edit
                           PUT    /members(.:format)               registration#update
                           DELETE /members(.:format)               registration#destroy
                 dashboard        /dashboard(.:format)             home#dashboard
                  register        /register(.:format)              registration#register
                      root        /                                home#index

型号:

class ToDoList < ActiveRecord::Base
  attr_accessible :is_favorite, :name, :description
  has_many :tasks,  dependent: :destroy
  belongs_to :member

控制器:

class ToDoListController < ApplicationController
  def index
    @todo_lists = ToDoList.all

    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @todo_lists }
    end
  end


  def new
    @todo_list = ToDoList.new

   respond_to do |format|
     format.html # new.html.erb
     format.json { render json: @todo_list }
   end
 end

【问题讨论】:

  • @todo_list 为零。你是为你正在渲染的视图定义它吗?
  • 是的。当我运行调试时,@todo_list 甚至为空,但不明白为什么它似乎被正确调用:。 (好吧,在这个视图中:&lt;% if member_signed_in? %&gt; &lt;%= render partial: 'to_do_lists/to_do_list' %&gt; &lt;%= link_to "Saída", destroy_member_session_path, :method =&gt; :delete %&gt; 和部分:&lt;%= form_for(@todo_list) do |f| %&gt; &lt;% if @todo_list.errors.any? %&gt; &lt;div id="error_explanation"&gt; ..
  • 你在哪里定义它不为零?
  • 好吧,它最终为空,因为它还没有创建任何东西:(。我想要部分打开新的。错误可能很愚蠢,但我注意到并找到了原因..@七海猫
  • 改为使用 form_for(ToDoList.new) 会发生什么?

标签: ruby-on-rails routes


【解决方案1】:

试试:

将控制器重命名为:

类 ToDoListsController

同时更改您的文件名和目录名。

【讨论】:

  • “NilClass:Class 的未定义方法 `model_name'”仍然存在。 :(。
  • 您是否停止并重新启动了服务器?
  • 你的文件名是什么?
  • 是的,当我搬入控制器时,我总是在重新启动。名称是: to_do_lists_controller.rb 控制器 to_do_list.rb 模型 index.html.erb 具有“渲染”的视图 '_to_do_list .html.erb' 部分
  • 如果你还有问题,把整个东西推到 git,我可以看看
猜你喜欢
  • 2015-07-09
  • 2014-02-07
  • 1970-01-01
  • 2012-03-02
  • 2015-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多