我有一个非常奇怪的场景,在 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 确实对我大喊大叫,告诉它找不到控制器,所以我知道它至少在寻找正确的控制器。
那么,知道为什么我会看到这种行为吗?我的自定义路线看起来正确吗?有没有人见过这种行为?
提前致谢
克里斯