我正在尝试在rails app上为ruby添加路由别名。这是我现有的路由文件:
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
但是,我想为一些特殊标签添加别名(不重定向),所以我可以像这样引用它们:
/博客/三明治
我在我/博客范围内添加了这个匹配语句:
match 'sandwiches' => 'tags#show', :defaults => { :id => 1 }
但我现在收到此错误:
NoMethodError in TagsController#show
undefined method `cache_key' for nil:NilClass
似乎它已被路由到正确的方法,但似乎出现了缓存(?)错误。
我还把完整的追踪作为一个要点:
答案 0 :(得分:0)
我认为你想要的是这样的:
class SpecialTagssConstraint
require 'set'
def initialize
@ok_tags = Set.new(['sandwiches','pastries'])
end
def matches?(request)
@ok_tags.include?(request.params[:id])
end
end
...
get '/:id', to: 'tags#show', constraints: SpecialTagsConstraint.new
我很确定您需要使用不同的参数名称:id尽管。
它应该是您通常使用值“三明治”传递的任何参数。
没有看到你的模特,我猜不出那是什么。 (标记?,名称?,)