12

当您键入

 rake routes 

一堆路由出来了,但是它们在哪里定义???

我知道有些是默认的,而其他的呢?

例如,这是来自控制器的脚本,我试图从 do_something 中删除“s”,但无法使其工作......它们是否也在其他地方定义?另外,他们什么时候接受参数,什么时候不接受,我怎么知道?谢谢!

def hello
  redirect_to do_things_shop_path(shop)
end

def do_things
end
4

1 回答 1

21

Rails 路由配置保存在config/routes.rb文件中。

取参数取决于很多事情。rake routes将显示带有参数的路由。成员操作将采用参数。

posts    GET        /posts(.:format)          posts#index
         POST       /posts(.:format)          posts#create
edit_post GET       /posts/:id/edit(.:format) posts#edit

在最后一行,你会像posts/:id/edit. 此路径需要:id参数。您可以通过多种方式调用此路线。其中之一是:

edit_post_path(@post)

如果你想创建一个自定义动作,(比如在帖子控制器下),你可以声明它如下:

match `/posts/:id/things_with_id`, :to => 'posts#do_things_with_id', :as => 'do_things_with_id
match `/posts/things_without_id`, :to => 'posts#do_things_without_id', :as => 'do_things_without_id

第一个需要身份证,第二个不需要。相应地调用它们:

do_things_with_id_path(@post)

do_things_without_id()

对于资源,您可以使用成员和集合操作轻松创建这些资源。成员操作需要 id 而收集操作不需要。

resources :posts do 
  member { get 'do_thing' }
  collection { get do_things' }
end

希望你明白了。

顺便说一句,如果您想清楚地理解这些内容,则必须阅读以下指南。 http://guides.rubyonrails.org/routing.html

于 2012-11-15T03:48:40.137 回答