2010-02-16 5 views
4

{: controller => "somecontroller", : action => "someaction"} hash와 함께 url_for를 사용하는 경우는 언제입니까?명명 된 경로 사용 vs. url_for() 사용

다른 하나보다 선호되는 이유는 무엇입니까? 하나 더 유지 보수가 가능하거나 더 효율적입니다. 공연?

답변

3

그것은 경로가하고있는 이름이 무엇인지 이해하는 데 도움이 될 수 있습니다 호출 할 수 있습니다.

명명 된 라우트를 정의하면 작성된 라우트에 필요한 옵션을 제공하는 url_for 주변에 랩퍼가 작성됩니다. 라우팅 리소스는 많은 명명 된 경로를 만듭니다.

염두에두고 필요한 옵션을 사용하여 url_for와 반대되는 명명 된 경로를 호출하는 오버 헤드는 무시할 수 있습니다. 따라서 특정 리소스에 연결하는 경우 route라는 이름이 사용됩니다. 그들은 읽고, 입력하고 유지하기가 더 쉽습니다.

그러나 url_for는 할인하지 마십시오. 누락 된 옵션을 처리하는 방식 덕분에 창의적인 용도로 많이 사용됩니다. 여러 개의 중첩 된 소스에서 사용되는 DRY 뷰를 유지하는 데 매우 유용합니다. 예 : blog_posts 컨트롤러와 posts_controller가 동일한보기를 공유 할 때.

url_for documentation을 읽기를 강력히 권장합니다. url_for를 사용하는 것이 적절한 장소를 파악하는 데 도움이됩니다.

0

나는 길이가 짧고 똑같은 이름의 루트를 선호합니다.

0

경로가 매우 깔끔합니다.

map.with_options :controller => "company", :action => "show", :panel => "name" do |m| 
    m.company '/company/:action/:id/:panel' 
end 

그럼 당신은

company_url :id => 1 
0

경로와 리소스를 신중하게 설정하면 해시 경로가 필요하지 않으며 이름이 지정된 경로 만 필요합니다 (map.resource 또는 사용자 정의 map.<something>을 통해 내장 됨). 해시 경로는 동적 콘텐츠를 기반으로 링크를 만들어야하는 경우 유용합니다. 뭔가 같은 :

link_to @post.title, :controller => (@user.is_admin ? 'admin/posts' : 'public/posts'), :action => 'show', :id => @post 

(이 그냥 강제 예이지만

을 :) 당신은 요점을 얻어야한다
관련 문제