Ruby on rails 线路/轨道内

Ruby on rails 线路/轨道内,ruby-on-rails,routing,Ruby On Rails,Routing,我正在编写一个带有一个主控制器的简单Rails应用程序,我想将/(:action(:id))映射到此控制器(基本上在开始时删除控制器前缀),但仍然有使用map.resources获得的路径帮助程序 我尝试了map.root:controller=>“notes”,但出现了一个错误: 未定义的方法“note_path”# 在这里,我使用link\u to\u,除非在我的视图中使用当前的功能 编辑:下面是index.html.erb中给出错误的代码 <% for note in categor

我正在编写一个带有一个主控制器的简单Rails应用程序,我想将
/(:action(:id))
映射到此控制器(基本上在开始时删除控制器前缀),但仍然有使用map.resources获得的路径帮助程序


我尝试了
map.root:controller=>“notes”
,但出现了一个错误:

未定义的方法“note_path”#

在这里,我使用
link\u to\u,除非在我的视图中使用当前的
功能

编辑:下面是index.html.erb中给出错误的代码

<% for note in category.notes %>
    <h3><%= link_to_unless_current h(numbered_title note), note %></h3>
<% end %>

更新:我不知道我是如何回答这个问题的,但作者只是指出这是3岁的孩子,我完全错过了。如果有人在rails 3中需要这种行为,我将留下这个答案。在rails 2中它是无效的

路由
root
将不适用于整个控制器,因为这必须指向特定操作

resources
的第一个参数将用于确定路径(通常为
/notes
),同时创建帮助程序,如
notes\u path
。您要做的是将其设置为
“/”
,但还要添加
:as
选项以提供正确的助手名称。所以最后它应该是这样的:

resources '/', controller: :notes, as: :notes
同样重要的是要注意,如果你想使用任何其他资源,你应该把它们放在
notes
route上面。否则rails将把资源名称识别为notes action show的
id

例如:

resources '/', controller: :notes, as: :notes
resources :comments
转到
/comments
将尝试查找id为“comments”的便笺

resources :comments
resources '/', controller: :notes, as: :notes

打开
/comments
将转到
comments\u controller#index

需要更多信息。比如在页面中发布带有链接的实际代码,除非链接是最新的,并且当你去那里的时候去根目录工作吗?另外,我认为您需要一个默认操作,我不认为您可以说只是映射到一个控制器;它怎么知道画什么呢?
map.root:controller=>'notes',:action=>'index'
也不起作用。此外,我想映射的不仅仅是
/
,还有
/:id
/:id/edit
,等等。嗯,#注意"如果你有一个命名的notes路由,那么路径就会被定义。。。您的route.rb文件中是否确实有map.resources:notes?你能给我们看一下你的完整路线吗?我刚刚意识到你在使用
map
,这是定义路线的老方法。你在rails 2.3上吗?