非常に奇妙なシナリオがありますが、コントローラのアクションメソッドがレールアプリで無視されているようです。私はこれが可能ではないと仮定していますが、私は "木の森"を見るのを助ける人が必要です:)ここに私が何を持っています。最初のカスタムルート:レールのコントローラコードがカスタムルートで無視されるようです。
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行に "undefined method` each of 'nil:NilClass "のエラーが表示されます。私はスキルテーブルにデータがあることを知っており、レールコンソールを介して見ることができます。トラブルシューティングのためレンダリングをしました:text => @ skills.to_yamlそしてそれは無視されたようです。これは私を混乱させたので、top_usersメソッドを完全に削除しても、同じエラーが表示されてしまいました。私は、top_usersメソッドを持たないため、私はレールが別のコントローラを見ているかもしれないと思ったので、私はコントローラの名前をSkillsControllerからSkillsXXXControllerに変更しました。今回はレールがコントローラーを見つけることができないと私に叫んだので、少なくとも正しいコントローラーを見ていたことは分かっています。
だから、なぜ私はこの動作を見ているの任意のアイデアですか?私のカスタムルートは正しいか?誰もこのタイプの行動を見たことがありますか?事前に
おかげ
クリス
あなたの試合のルートにアンダースコアがありませんか? 'スキル#トップユーザー'。 top_usersでコントローラメソッドを定義したようです。面白い、それは私の問題だった。 – botbot
私はまだレールが私に方法がなかったことを叫んでいなかったことに驚いている。ありがとう! –
私はコントローラメソッドが存在しないが、top_usersに一致するビューが存在する場合、エラーは発生しないと考えています。 – botbot