[ruby-on-rails] 레일 : 콘솔에서 경로 도우미의 출력 확인

Rails는 경로를 돕는 도우미를 만드는 이름이 지정된 경로로 많은 마법을 정의합니다. 경우에 따라, 특히 중첩 된 경로의 경우 주어진 경로 도우미 메서드 호출에 대해 어떤 URL을 얻을지 추적하기가 약간 혼란 스러울 수 있습니다. Ruby 콘솔을 사용하여 주어진 도우미 함수가 어떤 링크를 생성하는지 확인할 수 있습니까? 예를 들어 post_path (post)와 같은 명명 된 도우미가 주어지면 어떤 URL이 생성되는지 확인하고 싶습니다.



답변

rake routes직접 보여줄 수 있습니다.

Rails 콘솔에서을 호출 할 수 있습니다 app.post_path. 이것은 Rails ~ = 2.3 및> = 3.1.0에서 작동합니다.


답변

당신은 또한 수

include Rails.application.routes.url_helpers

콘솔 세션 내부에서 헬퍼에 액세스하십시오.

url_for controller: :users, only_path: true
users_path
# => '/users'

또는

Rails.application.routes.url_helpers.users_path


답변

Rails 콘솔에서 변수 앱은 경로 및 URL 헬퍼를 인스턴스 메소드로 호출 할 수있는 세션 객체를 보유합니다.

app.users_path


답변

path_helpers콘솔에서 항상 출력을 확인할 수 있습니다 . 함께 도우미를 사용하십시오app

app.post_path(3)
#=> "/posts/3"

app.posts_path
#=> "/posts"

app.posts_url
#=> "http://www.example.com/posts"


답변

경로가 이름 간격 인 경우 다음과 같이 기억하십시오.

product GET  /products/:id(.:format)  spree/products#show

그런 다음 시도하십시오 :

helper.link_to("test", app.spree.product_path(Spree::Product.first), method: :get)

산출

Spree::Product Load (0.4ms)  SELECT  "spree_products".* FROM "spree_products"  WHERE "spree_products"."deleted_at" IS NULL  ORDER BY "spree_products"."id" ASC LIMIT 1
=> "<a data-method=\"get\" href=\"/products/this-is-the-title\">test</a>" 


답변