Tôi có thể nhận tất cả các tuyến đường trong ứng dụng đường ray của mình không? Tôi cần một đầu ra như rake routes
và đặt kết quả trong một mảng.cách nhận tất cả các tuyến đường trong ứng dụng đường ray của tôi?
Có thể không? làm sao?
Tôi có thể nhận tất cả các tuyến đường trong ứng dụng đường ray của mình không? Tôi cần một đầu ra như rake routes
và đặt kết quả trong một mảng.cách nhận tất cả các tuyến đường trong ứng dụng đường ray của tôi?
Có thể không? làm sao?
Bạn có thể xem cách đường ray phun ra các tuyến đường đó từ tác vụ rake. Đó là trong /gems/rails/2.3.x/lib/tasks/routes.rake
cho Rails 2. Dường như về cơ bản làm ActionController::Routing::Routes.routes
trong trường hợp chung và sau đó thẩm vấn điều đó.
Đối với Rails 4, nó bây giờ là trong đá quý – Neikos
Vâng, một cách độc lập về nơi bạn cần đến nó, bạn có thể làm:
routes = `rake routes`.split("\n")
Hoặc thậm chí:
routes = `rake routes`.split("\n").map{ |r| r.gsub(', ', ',').split(' ') }
Để truyền bá đau đầu rằng đó là để acomplish rằng, tôi đã làm điều này dựa trên @jordini answer:
Rails.application.routes.routes.to_a.each do |rota|
if rota.app.instance_variable_defined? '@defaults'
perm = Permission.where({
:acao => rota.defaults[:action],
:controller => rota.defaults[:controller],
:verbo => rota.verb.source.to_s.gsub("^","").gsub("$","").downcase
).first_or_create
end
end
Đây là những gì tôi đã sử dụng để tạo tất cả các quyền cho trang web của tôi cùng một lúc.
Bạn cần đầu ra này ở đâu? – jordinl
Đối với Rails 3: 'Rails.application.routes.routes.to_a' (xem [câu trả lời gốc của tôi] (http://stackoverflow.com/a/10576105/407213)) – Dorian