【问题标题】:No route matches controller没有路线匹配控制器
【发布时间】:2011-05-11 22:15:15
【问题描述】:

在我的 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 = "sn-ps"):

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

执行上一行时,出现如下路由错误,不知道为什么:

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

更新:我发现了另一个问题,其回答似乎暗示上述内容应该有效:Dynamically construct RESTful route using Rails

谢谢
阿南德

【问题讨论】:

  • 但是@topic 是什么,也许更重要的是,该对象的id 是什么?
  • @topic 参数似乎无关紧要 - 即使我删除它,我也会得到同样的错误。
  • 我刚刚从问题中删除了@topic 参数
  • 你能显示你的 routes.rb 文件的相关部分吗?
  • 我在上面添加了 routes.rb 文件部分。

标签: ruby ruby-on-rails-3 send


【解决方案1】:

好的,我找到了 - Ryan 的评论提供了线索。

我没有传入@topic,这是必需的。如果我删除@topic,它会尝试访问没有路由的/sn-ps/。在调用此行之前,我将 @topic 设置为一个有效的主题,它可以工作。谢谢,瑞恩!

【讨论】:

    【解决方案2】:

    你试过了吗

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

    【讨论】:

    • 我尝试使用 eval - 它给了我同样的错误,但这次它显示了 Rails 代码中引发路由错误的位置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 2016-02-04
    相关资源
    最近更新 更多