简单的路由错误

时间:2011-06-06 23:24:19

标签: ruby-on-rails routing

总noob问题。

我正在Rails中构建一个简单的photoblog,其中包含Posts。每个帖子都有自己的ID“/ posts / 1”。我使用rails scaffolding构建了帖子。

问题是我无法访问诸如“/ posts / index”或“/ posts / anything”之类的网址,因为它试图将“/ posts /”后的任何内容与id匹配...所以我收到了一个错误:

Couldn't find Post with ID=index

我确信这可以通过路线修复,但我不确定如何,我觉得我在这里缺少一些重大问题。

您可以从此处克隆我的应用:https://github.com/tbhockey/PhotoBlog

谢谢。

2 个答案:

答案 0 :(得分:0)

运行rake routes通常非常有帮助。在这种情况下,索引的路径应该是/ posts(不是/ posts / index)。如果您运行rake routes,您可能会看到类似

的内容
posts GET    /posts(.:format) {:action=>"index", :controller=>"posts"}

这是试图告诉您URL /帖子将被定向到您的posts_controller的索引操作。此外,您的代码中可能会将此引用为posts_pathposts_url

答案 1 :(得分:0)

尝试为你的routes.rb执行此操作:

  scope :path => '/posts', :controller => :posts do
    get 'show/(:id)' => :show, :as => 'show_post'
  end 

对于/ posts / show / 1,它将调用posts控制器的show动作。

了解路由如何在Rails中运行总是一个好主意。这非常重要,可以帮助您了解有关Rails的许多内容。特别是查看命名路由对于良好的Rails编程至关重要。