0

我有这个

路线

put :sort, :path => 'activities/sort', :controller => 'activities'

JS

url: '/activities/sort',

我想转换成这个(不使用控制器名称或 :as 属性)

url: <%= :action => 'sort' %>, 

或类似这样的相同href:

<%= link_to "Order by name",
         :sort,
         :method => :put %>
4

2 回答 2

2

您应该在路由中写入此 url。喜欢:

配置/路由.rb

match 'activities/sort_by_attr' => 'activities#sort', :as => :sort_by_attr

然后写

url: <%= sort_by_attr_path %>, 
于 2012-08-16T19:57:31.153 回答
1

您将定义这样resources :activities的路由,routes.rb其中​​将免费为您提供 7 条 RESTful 路由。但是,您不仅限于 RESTful 路由默认创建的七个路由。如果您愿意,您可以添加适用于集合或集合的各个成员的其他路由。

resources :activities do
  collection do
    get 'sort_by_attr'
  end
end

或者

resources :activities do
  get 'sort_by_attr', :on => :collection
end

您可以使用:as选项为任何路由指定名称,如下所示:

resources :activities do
  get 'sort_by_attr', :on => :collection, :as => :sort
end

这会给你sort_activities_pathsort_activities_url。阅读更多关于从外到内的 Rails 路由

编辑:

如果您只是将:action参数传递给 link_to,它将尝试在当前控制器中找到该路由并呈现该操作。虽然不推荐,但您可以尝试定义一个通用路由来匹配任何 url,如下所示:

match ':controller/:action'
于 2012-08-16T20:11:21.363 回答