2009-08-06 2 views
3

내 경로 파일 접두어 값을 각 map.resources 행에 추가했습니다. 그래서 모두는 다음과 같습니다접두어에 * _path 메소드로 생성 된 경로에 접두사에 기본값 추가

map.resources :subjects, :path_prefix => ':company' 

내가 심지어 모든 루트 자원의 방법으로 처리하기 때문에 (내가 믿는) 필요하지 않습니다 기본 동작

map.connect ':company/:controller/:action/:id' 

이 라인을 추가했습니다.

ApplicationController의 before_filter 메소드에서 회사 매개 변수를 가져옵니다. 모든 것이 작동합니다. 그러나.

모든 * _path 메소드의 동작을 변경하여 URL에서 가져온 모든 생성 된 URL에 대해 회사 값을 설정하게 할 수 있습니까? 완벽하게 작동하도록하려면 각 _path 메서드에 대해 회사 값을 param으로 추가해야합니다. 나는 그것을 자동으로 만드는 것이 가능하다고 믿는다.

답변

2

응용 프로그램 컨트롤러에서 default_url_options을 덮어 써야합니다.

class ApplicationController > ActionController::Base 

    # ... 

    def default_url_options(options) 
    { :company => current_company.id } 
    end 

end 
+0

나는 당신이 전체 예외 역 추적하고 당신이 그것을 구현하는 방법의 예를 게시하지 않는 한 지원 제공 할 수 –

+0

각 _path 방법의 인수 오류 잘못된 번호 (1 0)을 얻는다. 또한 current_company.id는 내가 완전성을 위해 사용한 예입니다. 필요에 따라 코드를 수정해야합니다. –

+1

default_url_options (options)를 default_url_options (options = {})로 변경하여 인수 오류 수를 수정했습니다. 그러나 논쟁에 관한 다른 문제가 있습니다. 이제는 * _path (: id => @object)를 지정해야합니다. 항상 첫 번째 인수가 company 객체가 될 것으로 예상하기 때문입니다. 여기에 설명되어 있습니다 : https://rails.lighthouseapp.com/projects/8994/tickets/1251-default_url_options-cant-be-used-with-named-routes 감사합니다! –