为每个操作自定义资源路由

时间:2014-01-01 17:46:56

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4 routes custom-routes

我有resources :posts。如何自定义它的以下路径,以及使用常规资源路径名称调用它的能力:

URL          Controller action      Helper function
'q'          'posts#index'          posts_path
'q/(:id)'    'posts#show'           post_path(:id)
'ask'        'posts#new'            new_post_path
'q'          'posts#create'         posts_path

以下是我尝试过的内容,并且不能作为上述预期结果...

get 'q' => 'posts#index', as: :posts
get 'q/(:id)' => "posts#show", as: :post
get 'ask' => 'posts#new'

2 个答案:

答案 0 :(得分:1)

您可能会收到错误,因为您正在尝试分配已在使用的路由名称。

resources posts调用会产生postspost路由的定义。如果您更改as: ..子句以引用不同(未使用)的名称,则不会再出现该错误。

答案 1 :(得分:0)

尝试resources :posts path => 'q'