nil的未定义方法:NilClass,相同的控制器动作工作正常吗?

时间:2014-01-02 21:39:02

标签: ruby-on-rails ruby ruby-on-rails-3

我有一个ConversationsController有两个相同的动作:

 def index
    @conversations ||= current_user.mailbox.inbox.all
    @trash ||= current_user.mailbox.trash.all
  end  
  def trashbin
    @conversations ||= current_user.mailbox.inbox.all
    @trash ||= current_user.mailbox.trash.all
  end

唯一的区别是视图中显示的信息。索引页面显示数据就好了。但是,对于出现在trashbin视图中的每个实例变量,我都会收到以下错误:

undefined method 'count' for nil:NilClass

查看:

<%= @conversations.count %>

计算恰好是视图页面中使用的第一个方法。除了一些纯文本之外,两个动作之间的视图几乎相同。我很难过为什么我在一个动作上出错了。我在索引页面上使用<%= @conversations.count %>,它工作正常。

唯一的可能是路径文件出错。我在使自定义垃圾箱路由工作时遇到了一些麻烦,所以我认为问题在于路径文件:

resources :conversations do
  member do
    post :reply
    post :trash
    post :untrash
  end
  collection do
    get :trashbin, :action => 'trashbin'
  end
end

有什么想法吗?

谢谢!

编辑:更新了路线代码(所有路线代码均已发布)。

此外,这是终端中生成的错误:

Started GET "/conversations/trashbin" for 127.0.0.1 at 2014-01-02 17:38:34 -0500 Processing by ConversationsController#trashbin as HTML User Load (0.7ms) SELECT "users".* FROM "users" WHERE "users"."id" = 1 LIMIT 1 Rendered conversations/trashbin.html.erb within layouts/application (4.0ms)

1 个答案:

答案 0 :(得分:0)

这对我来说是一个新手的错误。控制器中的“相同”动作并不完全相同。 “私有”下列出了无法正常工作的控制器操作,这解释了为什么视图-_-无法访问实例变量。

抱歉浪费你的时间大家!