Ruby 没有路由匹配控制器
在我的rails 3应用程序中,我有一条路线,在调用rake routes时显示如下:Ruby 没有路由匹配控制器,ruby,ruby-on-rails-3,send,Ruby,Ruby On Rails 3,Send,在我的rails 3应用程序中,我有一条路线,在调用rake routes时显示如下: 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 =&g
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”):
更新:我发现了另一个问题,其回答似乎暗示上述方法应该有效:
谢谢A你试过了吗
<%= send(eval("topic_#{@name}_path"), @topic)%>
好的,我找到了-Ryan的评论提供了线索
我没有传递@topic,这是必需的。如果我删除@topic,它会尝试访问没有路由的/snippets/。在调用这一行之前,我将@topic设置为一个有效的topic,它就可以工作了。谢谢你,瑞安 我尝试使用eval-它给了我相同的错误,除了这次它显示了rails代码中引发路由错误的位置。但是什么是
@topic
,也许更重要的是,该对象的id
?@topic参数似乎不相关-即使我删除它,我得到了同样的错误。我刚刚从问题中删除了@topic参数。你能显示routes.rb文件的相关部分吗?我已经在上面添加了routes.rb文件部分。
No route matches {:controller=>"snippets"}
<%= send(eval("topic_#{@name}_path"), @topic)%>