0

我有一个非常奇怪的场景,在 Rails 应用程序中似乎忽略了控制器操作方法。我假设这是不可能的,但我需要有人帮助我看到“树木的森林”:) 这就是我所拥有的。首先是自定义路线:

 match 'topusers/:skill', :to => 'skills#topusers', :as => :top_users

然后在我的控制器中,我将其缩减为以下内容:class SkillsController < ApplicationController

class SkillsController < ApplicationController

        ....

    def top_users
        @skills = Skill.all
    end

        ....
end

我的观点已简化为以下

<% @skills.each do |skill| %>
   <%= skill.name %>
<% end %>

有了这个,我在@skills.each 行上收到“nil:NilClass 的未定义方法 `each'”的错误。我知道技能表中有数据,我可以通过 rails 控制台看到。为了排除故障,我做了一个渲染:text => @skills.to_yaml,它似乎被忽略了。这让我很困惑,所以我完全删除了 top_users 方法,但仍然遇到同样的错误,这让我很困惑,因为我认为 rails 会因为没有 top_users 方法而对我大喊大叫。然后我认为 rails 可能正在查看不同的控制器,因此我将控制器的名称从 SkillsController 更改为 SkillsXXXController。这次 rails 确实对我大喊大叫,告诉它找不到控制器,所以我知道它至少在寻找正确的控制器。

那么,知道为什么我会看到这种行为吗?我的自定义路线看起来正确吗?有没有人见过这种行为?

提前致谢

克里斯

4

1 回答 1

1

您在比赛路线中缺少下划线吗?'技能#topusers'。看起来你已经在 top_users 定义了你的控制器方法。

于 2012-04-19T21:52:50.883 回答