我有一個非常奇怪的情況,看起來控制器操作方法在Rails應用中被忽略。我假設這是不可能的,但我需要有人幫助我看到「樹林」:)這是我擁有的。首先自定義路線:Rails控制器代碼對於自定義路由似乎被忽略
match 'topusers/:skill', :to => 'skills#topusers', :as => :top_users
然後在我的控制器,我已經減少它歸結爲以下幾點:類SkillsController < ApplicationController的
class SkillsController < ApplicationController
....
def top_users
@skills = Skill.all
end
....
end
我的觀點已經減少到以下
<% @skills.each do |skill| %>
<%= skill.name %>
<% end %>
有了這個,我在@ skills.each行上收到了一個錯誤「未定義的方法」,每個'nil:NilClass「。我知道技能表中有數據,我可以通過導軌控制檯看到。爲了解決問題,我做了一個渲染:text => @ skills.to_yaml,它似乎被忽略。這讓我感到困惑,於是我徹底刪除了top_users方法,但仍然遇到了同樣的錯誤,讓我感到困惑,因爲我認爲rails會因爲沒有使用top_users方法而尖叫。然後我認爲rails可能正在查看不同的控制器,所以我將我的控制器的名稱從SkillsController更改爲SkillsXXXController。這段時間Rails對我說,它無法找到控制器,所以我知道它至少看到了正確的控制器。
那麼,爲什麼我看到這種行爲的任何想法?我的自定義路線看起來正確嗎?有沒有人見過這種行爲?
在此先感謝
克里斯
你在比賽路線中是否缺少下劃線? '技能#topusers'。看起來像你已經在top_users上定義了你的控制器方法。 – botbot 2012-04-19 19:54:18
有趣的是,這是我的問題。我仍然感到驚訝,鐵軌沒有對我說這個方法不存在。謝謝! – 2012-04-19 19:58:34
我相信,如果控制器方法不存在,但有一個匹配top_users的視圖,那麼將不會發生錯誤...雖然不太確定。 – botbot 2012-04-19 21:58:14