2012-05-03 4 views
0

:레일 3 - 라우팅 및 파라미터 이름 내 모델에서이 규칙을 사용

def to_param 
    "#{self.name.parameterize}" 
    end 

내 도우미에서 :

def articles_menu 
    menu = '<ul>' 
    Article.all.each do |article| 
     menu += '<li>' 
     menu += link_to "#{article.name}", article 
     menu += '</li>' 
    end 
    menu += '</ul>' 
    return menu.html_safe 
    end 

을하지만 난 /articles/my-new-flat에 갈 것이다 때, 나는거야 오류가 발생합니다

ActiveRecord::RecordNotFound in ArticlesController#show 

Couldn't find Article with id=my-new-flat 

아직 누락되었거나 내 앱에 문제가 있습니까? 나는 비록 이름의 파라미터 설정 만 여기에 코드와 https://github.com/norman/friendly_id/blob/master/README.md

문제가 레일 있음을 인 링크는,

답변

0

사용 FriendlyId 보석은 당신이 필요한 모든 것을 가지고 ... 모델 규칙에서 설정 필요 허브에서 "id"속성으로 모델을 쿼리하려고하면 "name"속성을 쿼리하지 않습니다. FriendlyId gem이 원하는 모델에 패치합니다

+0

** FriendlyId **를 사용하지 않고도 수행 할 수있는 방법이 있습니다. 나는이 보석에 대해 알고 있지만 DB 구조에 간섭하는 것을 좋아하지 않을 것입니다 ... – user984621

+0

어떻게하면 레일스 라우팅이 작동하고': id' 라우트 파라미터가 어떻게 바뀌어야 만합니다. FriendlyId 소스 코드를 확인할 수 있습니다. 2 개의 파일을 https://github.com/norman/friendly_id/blob/master/lib/friendly_id/finder_methods.rb 및 https://github.com/norman/friendly_id/blob/master/lib/에서 확인하고 싶습니다. friendly_id/finder_methods.rb. 두 번째는 실제로 찾고있는 확장이며 ActiveRecord :: Base를 확장해야합니다. –

+0

한 가지 더,이 메서드의 원래 구현도 wok이어야하므로 모델의 실제 ID에 응답해야합니다. 'Article.find_on (1234)'및'Article.find_one ("article-name-or-title")을 사용하여 테스트해야합니다. –