没有路由匹配控制器

问题描述:

在我的Rails应用程序3,我有这显示了一个路线调用rake路线如下:没有路由匹配控制器

topic_snippets GET /topics/:topic_id/snippets(.:format) {:action=>"index", :controller=>"snippets"} 

在routes.rb中

resources :topics do 
member do 
    get 'get_topics' 
end 
resources :snippets, :only => [:index] 
end 

在我看来,我如下所示(其中@name =“snippets”):

<%= send("topic_#{@name}_path")%> 

执行上一行时,出现以下路由错误:n加时赛知道为什么:

No route matches {:controller=>"snippets"} 

更新:我发现他们的反应似乎暗示着上面的应该工作了另一个问题:Dynamically construct RESTful route using Rails

谢谢
阿南德

+0

但是'@ topic'是什么,也许更重要的是,该对象的'id'是什么? – 2010-11-18 18:12:49

+0

@topic参数似乎不相关 - 即使我将其删除,也会得到相同的错误。 – Anand 2010-11-18 18:33:45

+0

我刚刚从问题 – Anand 2010-11-18 18:34:13

好吧,我发现了 - 瑞恩的评论提供了线索。

我没有通过@topic,这是必需的。如果我删除了@topic,它会试图在/ snippets /中找不到路由。在调用这一行之前,我将@topic设置为一个有效的主题,并且它可以工作。谢谢,瑞恩!

你试过

<%= send(eval("topic_#{@name}_path"), @topic)%> 
+0

我尝试使用eval - 它给了我同样的错误,除了这次它显示了轨道代码中导致路由错误的位置。 – Anand 2010-11-18 18:00:38