Rails使用控制器操作在Route.rb中获取路由名称

时间:2017-12-08 13:43:36

标签: ruby-on-rails

我是铁杆的真正初学者。

我可以从一个控制器获得多条路线+多个动作吗?

例如,

resources :something

得到“某事#dedex”,“某事#show”,“某事#更新”......等等。

我只是好奇是否有命令从行动中获取路线名称。

例如,在名为“pledges”的控制器中,

class PledgesController < ApplicationController
    def home
    end

    def abc
    end

    def defg
    end

    def hijk
    end
end

任何命令都能得到“承诺#home”,“承诺#abc”,“承诺#defg”,“承诺#hijk”?

2 个答案:

答案 0 :(得分:0)

如果没有安静的话,您将必须定义所有自定义操作(但我强烈建议您遵循其余约定)。例如:

get  'pledges' => 'abc'
post 'pledges' => 'defg'
put  'pledges' => 'hijk

答案 1 :(得分:0)

添加自定义,&#34;非RESTful&#34;路由到资源,您可以执行以下操作:

resources :pledges do
  collection do
    get :foo
  end

  member do
    put :bar
  end
end

collection - 定义的路线会产生针对Pledge整体的结果 - 请考虑index路线。

member - 已定义的路由会针对Pledge实例生成结果 - 请考虑show路由。

这将为您生成以下路线:

foo_pledges  GET       /pledges/foo(.:format          pledges#foo
bar_pledge   PUT       /pledges/:id/bar(.:format)     pledges#bar
pledges      GET       /pledges(.:format)             pledges#index
             POST      /pledges(.:format)             pledges#create
new_pledge   GET       /pledges/new(.:format)         pledges#new
edit_pledge  GET       /pledges/:id/edit(.:format)    pledges#edit
pledge       GET       /pledges/:id(.:format)         pledges#show
             PATCH     /pledges/:id(.:format)         pledges#update
             PUT       /pledges/:id(.:format)         pledges#update
             DELETE    /pledges/:id(.:format)         pledges#destroy