【发布时间】:2013-09-17 18:28:48
【问题描述】:
我正在尝试将路由别名添加到 ruby on rails 应用程序。这是我现有的路由文件:
scope "/blog" do
resources :tags, :path => :tags, :as => :tags, :only => [:index, :show] do
match 'page/:page' => 'tags#show', :on => :member
end
end
这非常适合以下路线:
/blog/tags/sandwiches
但是,我想为一些特殊标签添加一个别名(不重定向),所以我可以像这样引用它们:
/blog/sandwiches
我在 /blog 范围内添加了这个匹配语句:
match 'sandwiches' => 'tags#show', :defaults => { :id => 1 }
但我现在收到此错误:
NoMethodError in TagsController#show
undefined method `cache_key' for nil:NilClass
似乎它被路由到了正确的方法,但似乎出现了缓存(?)错误。
我还将完整的跟踪记录作为要点:
【问题讨论】:
-
你能发布引发错误的行吗?也许堆栈跟踪也是
-
我已经在上面添加了完整的跟踪。
-
你的控制器的第 13 行是什么?
-
@format = 'ajax_form' #不过也说“in `show'”,但是没有show方法。我假设 show 是由 Ruby on Rails 自动创建的?
-
是的,它是通过 routes.rb 文件中的资源方法生成的。它生成 CRUD 操作减去“除外”操作,或仅生成“仅”选项中包含的操作(在您的情况下,索引和显示)
标签: ruby-on-rails ruby rails-routing