programing

Rails 콘솔 세션에서 경로 인식

copyandpastes 2021. 1. 16. 11:00
반응형

Rails 콘솔 세션에서 경로 인식


blogs_path와 같이 더 많은 정보를 원하는 라우터 도우미가 있다고 가정 해 보겠습니다. 콘솔에서 그 뒤에있는지도 문을 어떻게 찾습니까?

생성 및 인식을 시도했지만 'config / routes.rb'가 필요한 후에도 인식 할 수없는 메서드 오류가 발생했습니다.


URL-to-controller / action 매핑 및 그 반대를 수동으로 확인하는 방법을 보여주는 Zobie의 블로그에 예제와 함께 좋은 요약이 있습니다 . 예를 들어

 r = Rails.application.routes

경로 객체에 액세스하기 위해 (몇 년 된 Zobie의 페이지는를 사용하라고 말 ActionController::Routing::Routes했지만 이제를 선호합니다 Rails.application.routes). 그런 다음 URL을 기반으로 라우팅을 확인할 수 있습니다.

 >> r.recognize_path "/station/index/42.html"
 => {:controller=>"station", :action=>"index", :format=>"html", :id=>"42"}

주어진 컨트롤러 / 작업 / 매개 변수 조합에 대해 생성되는 URL을 확인합니다.

 >> r.generate :controller => :station, :action=> :index, :id=>42
 => /station/index/42

고마워, 조비!


Rails 3.2 앱의 콘솔에서 :

# include routing and URL helpers
include ActionDispatch::Routing
include Rails.application.routes.url_helpers

# use routes normally
users_path #=> "/users"

기본적으로 (귀하의 질문을 올바르게 이해했다면) UrlWriter 모듈을 포함하는 것으로 요약됩니다.

   include ActionController::UrlWriter
   root_path
   => "/"

또는 콘솔의 호출 앞에 앱을 추가 할 수 있습니다. 예 :

   ruby-1.9.2-p136 :002 > app.root_path
   => "/" 

(이것은 모두 Rails v. 3.0.3입니다.)


다음과 같은 오류가 표시되는 경우

ActionController::RoutingError: No route matches

작동해야 할 곳에서 Spree가 경로를 앞에 추가하는 것과 같은 작업을 수행하는 rails gem 또는 엔진을 사용할 수 있습니다. 콘솔에서 경로를 보려면 다른 작업을 수행해야 할 수 있습니다.

spree의 경우 이것은 경로 파일에 있습니다.

Spree::Core::Engine.routes.prepend do
  ...
end

그리고 @ mike-blythe가 제안한 것처럼 작동하려면 이전에 generate또는 recognize_path.

r = Spree::Core::Engine.routes

프로젝트 디렉토리에서 route 명령을 실행하면 라우팅이 표시됩니다.

rake routes

이것이 당신이 염두에 둔 것입니까?

참조 URL : https://stackoverflow.com/questions/2778074/recognize-routes-in-rails-console-session

반응형