2010-02-26 3 views
2
class Content < ActiveRecord::Base 
    has_friendly_id :title, :use_slug => true 
end 

어떻게/contents/about-us 대신/about-us와 같은 링크를 만들 수 있습니까?범위가없는 friendly_id/content_url

content_url 메소드를 수정해야합니까? 아니면 더 나은 방법이 있습니까?

답변

0

좋아요,이 답변을 다시하십시오. has_friendly_id 플러그인을 포함하여 좀 더 자세히 들여다 보았지만 좋았지 만 전에 사용하지 않았습니다. 나는 과거에 우호적 인 URL을 만들기위한 나 자신의 방법을 다소 굴렸다.

콘텐츠 테이블의 각 제목에 친숙한 URL이 필요하고 사용자가 /content이 아닌 / (root)에서 시작한다고 가정합니다. friendly_id를 사용하여 즉각적인 방법을 볼 수는 없지만 routes.rb가이를 매우 쉽게 수행합니다.

수정 routes.rb는 content 당신의 root로 만들려면 :

map.root :controller => 'content' 

나는 충돌이있을 경우 그냥 순서에 따라 여러 map.root 호출 할 수 있다고 생각합니다. 그렇지 않은 경우 별칭 일뿐입니다.

map.connect '', :controller => 'content' 

행운을 비네!

+0

나는 "우리에 대해"제목으로 모델을 의미 :이 같은이 새로운 경로를 사용해야합니다 당신은 또한 당신의 의견에 URL을 생성하는 곳마다 확인해야합니다

, 나는 새로운 모델이 데이터베이스에 추가 될 때마다 config/routes 파일을 수정하고 싶지 않다. – astropanic

+0

나는 나의 대답을 조금 더 우울하게 만들었다. 더 많은 설명이 필요하면 알려주세요.당신이 모델을 언급하고 있기 때문에 당신은 노선의 목적에 약간 혼란스러워하고있는 것처럼 보입니다. "경로"또는 "링크"는 실제로 컨트롤러와 동작에 매핑됩니다. 그런 다음 컨트롤러의 명명 된 동작 메서드로 모델에 액세스합니다. 모델로 바로 연결하는 방법을 모르겠습니다. 방법이 있다면, 그것은 확실히 레일이 작동하는 방식이 아닙니다. – dpb

+0

나는 레일스가 작동하는 방법을 알고 액션 컨트롤러 mechanizm을 알고 있지만, http://ministerstwogadzetow.com과 같은 링크를 원한다. 예를 들어, 두 링크 http://www.ministerstwogadzetow.com/wyciagarka-do- slodyczy.html - 이것은 제품 컨트롤러 쇼 동작을 가리키며 이것은 카테고리 컨트롤러 쇼 동작 (PHP 엔진)을 가리키는 http://www.ministerstwogadzetow.com/zegary-i-zegarki.html입니다. no/categories/something/something/products/something 그리고 이것은 내가 원하는 것입니다. – astropanic

3

나는 지금 작업하고있는 사이트에서이 작업을 수행했습니다.

실제로 올바른 경로를 지정해야합니다. 모델로

콘텐츠라고, 나는 (당신의 routes.rb에) 이미이 같은 자원으로 내용을 매핑 한 가정 :

http://example.com/content/my-special-content-page

:

map.resources :content 

이 같은 URL을 처리합니다

http://example.com/my-special-content-page

:

같은 URL을 처리하려면

당신은 단순히 다음과 같은 경로를 매핑해야합니다

map.content '/:id', :controller => 'content', :action => 'show' 

참고 : 대부분의 것들보다이를 넣어해야합니다 있도록

경로는 위에서 아래로 작동합니다. 전무의 ID : 특히 : 그것이로 Controller.show의 액션을 호출하려고 할 것이기 때문에

이 위의 새로운 경로를 넣으면
map.root :controller => "welcome" 

, 오류하게 될 겁니다.

= link_to "My Special Page", content_path(@content) 
+0

정확히 내가 원하는 것은 아니지만 좋은 해결책. 둘 이상의 모델, 콘텐츠뿐 아니라 제품 및 사진이 너무 많으면 어떻게해야합니까? – astropanic