Rails 콘솔에서 경로 도우미 액세스

4391 단어 rails


Rails에서 경로는 들어오는 URL을 컨트롤러 작업에 매핑합니다. 애플리케이션에 대한 경로를 정의할 때 경로 이름에서 상대 또는 절대 URL을 빌드하기 위한 경로 및 URL 도우미도 가져옵니다. 예를 들어 usersconfig/routes.rb 리소스가 있다고 가정합니다.

resources :posts


이 경로는 보기에서 사용할 수 있는 메서드posts_path를 생성합니다. 간단한 경로의 경우 도우미의 출력을 추측할 수 있습니다. 예를 들어 posts_path 도우미는 URL을 반환합니다 /posts . 복잡한 경로, 특히 중첩된 경로의 경우 헬퍼를 사용하여 보기를 렌더링할 때까지 URL을 파악하기 어려울 수 있습니다.

이 게시물은 Rails 콘솔에서 직접 URL 및 경로 도우미의 출력을 확인하는 간단한 방법을 보여줍니다. 또한 모델에서 이러한 도우미에 액세스하는 방법도 살펴보겠습니다.

다음은 단일 경로가 있는 일반적인 경로 파일입니다.

# routes.rb

Rails.application.routes.draw do

  get '/posts/:id/preview', to: 'posts#preview', as: "preview_post"

end


이 경로는 URLposts/:id/previewPostsController#preview 작업에 매핑합니다. 또한 preview_post 옵션을 사용하여 경로 이름을 as로 지정했습니다. 따라서 Rails는 자동으로 preview_post_pathpreview_post_url 헬퍼를 생성합니다.

애플리케이션에서 경로를 보려면 rails routes 명령을 실행할 수 있습니다.

> bin/rails routes -g preview

Prefix Verb URI     Pattern                  Controller#Action
preview_post GET  /posts/:id/preview(.:format) posts#preview


그러나 이것은 경로가 생성할 URL을 알려주지 않습니다. 이를 위해 응용 프로그램을 나타내는 app 개체에서 도우미 메서드를 호출할 수 있습니다. Rails는 부팅 시 app 객체에 모든 도우미를 추가합니다. 따라서 콘솔에서 명명된 경로 도우미의 출력을 확인할 수 있으며 이는 개발 중에 매우 편리합니다.

irb(main):018:0> post = Post.first

irb(main):019:0> app.preview_post_path(post)
=> "/posts/5/preview"



모델에서 도우미 액세스



기본적으로 도우미 메서드는 컨트롤러, 보기 및 메일러에서 액세스할 수 있습니다. 다른 위치(예: 모델)에서 자동 생성 도우미 메서드에 액세스해야 하는 경우 클래스에 Rails.application.routes.url_helpers를 포함하여 수행할 수 있습니다.

class Post < ActiveRecord::Base
  include Rails.application.routes.url_helpers

  def link
    post_path(self)
  end
end

Post.find(1).link # => "/posts/1"


도움이 되길 바랍니다.

좋은 웹페이지 즐겨찾기