2011-04-15 78 views
76

在我的routes.rb路径我有以下几点:路径佣工生成点,而不是斜线

resources :message_threads 

当我打电话:

message_threads_path(1) 

我得到:

/message_threads.1 

为什么是这样?我的其他资源工作正常。我没有正确地将这个复数化吗?

回答

117

是的,这是一个多元化错误。

通过传递ID 1,我假设你希望显示一条记录。

所以你需要使用单数“message_thread”:

message_thread_path(1) 

这将产生:

http://localhost:3000/message_threads/1 
+1

大声笑,这个工程。我发誓我多次尝试过。其中一个晚上...... – ghempton 2011-04-15 08:50:11

+3

嘿。它发生在我们身上;经常。可能不会是你最后一次看到这个错误! – Scott 2011-04-15 08:59:38

+0

我得到这个非常相同的错误与我创建的命名路线,我不是多元化它。那里有什么修复? – kakubei 2012-07-30 14:36:01

15

有时这也就是当你不提供:在您的路线参数:

delete "delete/:id" => "home#delete" 

更改为:

delete "delete/:id" => "home#delete", as: :delete 

(忽略奇例子,正好是东西,我们只是遇到了一个内部应用程序,我们正在构建)

+4

这对我有效。指定**:as **给了我一个名字,我可以将“_path”附加到并让Rails知道我在link_to中要求的是什么。 本来,当我的路由文件有: '匹配 “/ XYZ /显示/:PROJECT_ID”=> “XYZ#show_project”:经由=> [:获得]' 我的视图的标记: '< (%)=的link_to “查看详情”,xyz_show_path(@project)%>' 保持生产:'的http://本地主机:3000/XYZ/show.1' 更改路由文件到: '匹配“/ xyz/show /:project_id“=>”xyz#show_project“,:via => [:get],:as =>”show“' allowed: '<%= link_to”Show Details“,show_path @project)%>' 工作。 – ayang 2013-05-22 18:50:03