对于自定义路由,Rails控制器代码似乎被忽略

时间:2012-04-19 19:36:47

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

我有一个非常奇怪的场景,似乎在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的“undefined method` each'错误。我知道技能表中有数据,我可以通过rails控制台看到。要进行故障排除,我做了一个渲染:text =&gt; @ skills.to_yaml似乎被忽略了。这让我很困惑,所以我完全删除了top_users方法,但仍然遇到了让我困惑的错误,因为我认为rails会因为没有top_users方法而尖叫我。然后我认为rails可能正在查看不同的控制器,因此我将控制器的名称从SkillsController更改为SkillsXXXController。这次铁路确实对我大喊大叫告诉它无法找到控制器,所以我知道它至少看着正确的控制器。

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

提前致谢

克里斯

1 个答案:

答案 0 :(得分:1)

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