铁路耙路线来自哪里

时间:2012-11-15 03:27:47

标签: ruby-on-rails routes ruby-on-rails-3.1

键入

 rake routes 

出现了一堆路线,但是他们在哪里定义了???

我知道有些是默认的,其他的如何?

例如,这是一个来自控制器的脚本,我试图从do_something中取消's',但是不能使它工作....它们是否也定义在其他地方? 此外,他们什么时候采取参数,什么时候不参加,我怎么知道它?谢谢!

def hello
  redirect_to do_things_shop_path(shop)
end

def do_things
end

1 个答案:

答案 0 :(得分:19)

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)

如果要创建自定义操作(例如在posts控制器下),可以将其声明为:

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

第一个需要ID而第二个不需要。相应地打电话给他们:

do_things_with_id_path(@post)

do_things_without_id()

对于资源,您可以使用member& amp;收集行动。成员操作需要id,而集合操作则不需要。

resources :posts do 
  member { get 'do_thing' }
  collection { get do_things' }
end
希望你明白了。

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