愚蠢的问题......我在一个页面上有两个具有两个不同功能的表单,我的views / projects / new.html.erb文件。到目前为止,我只实现了一个,可以选择“创建”一个新项目。我想添加另一个函数来对同一页面上显示的记录进行排序,例如:
<%= link_to "Category", { :controller => "projects", :action => "sortTable", :filter => "Category" }, :remote => true %>
- 我的routes.rb文件:
Docside::Application.routes.draw do
resources :projects
resources :categories
#get "home/index"
root :to => "projects#new"
match 'project/new',:controller=>"projects",:action=>"create"
end
但是我收到错误“No route matches {:action =&gt;”sortTable“,:controller =&gt;”projects“}”。当我尝试添加“match'project / new'时,:controller =&gt;”projects“,:action =&gt;”sortTable“”我的其他功能不起作用,并且创建功能搞砸了。我该怎么办?
答案 0 :(得分:2)
答案 1 :(得分:2)
对于给定的路径和方法组合,您只能有一条路线。您尝试在同一路径上定义多个路由,因此只有其中一个路由可用(第一个路径)。如果您为每个操作使用不同的路径(而不是所有这些操作的项目/新路径,那么您应该没问题。请注意与现有路径的冲突)
如果你坚持使用rails的惯例,你也会让生活变得更轻松(如果其他人开始使用它,代码会更容易阅读)。例如,resources :projects
已经为创建操作创建了一条路径。可以像这样添加其他操作
resources :projects do
collection do
get :sort_table
end
end
为sort_table操作设置一个收集路由(即一个与特定项目无关的路由),并为您设置一个URL帮助程序(sort_table_projects_path)。您可以使用其他语法 - 我建议您查看路由guide