2013-04-18 3 views
2

레일스에서 ​​레이크 작업의 클래스를 꼭 알 필요가없는 모델로 경로를 가져 오려고합니다. (그래서 .erb에 없습니다.) 레일즈에서 알 수없는 모델의 URL 도우미는 무엇입니까?

는 내가이 작업을 수행 할 수 있다는 사실을 알고 :

Rails.application.routes.url_helpers.<model>_path(model) 

하지만 내가 반드시 모델을 모른다면? Rails-y가 model.class 또는 다른 검사를 시작하는 것 같지 않습니다. 난 그냥 기본 경로 또는 모델에 대한 URL을 찾고 있어요.

편집 : 기본 경로로 무엇을 의미하는지 명확히하기 위해 link_to 할 때 얻을 수있는 href입니다. 즉, model_path와 같은 url 도우미를 지정하지 않고이 작업을 수행 할 수 있습니다 (

<%= link_to "my model", @model %> 

). 그게 내가 원하는거야.

+0

나는 당신이 여기서 무엇을 묻고 있는지 잘 모르겠습니다. 모델에는 '기본 경로'가 없습니다. – sevenseacat

답변

3

내부적으로 link_to은 주어진 인수에 대한 경로를 얻기 위해 url_for을 호출합니다.

모델로 url_for으로 전화하면 polymorphic_path 또는 polymorphic_url으로 추가 전송됩니다. 당신은 그냥 당신은 또한 단지 url_for를 사용할 수있는 경로를

task :some_task => :environment do 
    include Rails.application.routes.url_helpers 

    # ... 

    path = polymorphic_path(some_model_instance) # => e.g. "/widgets/42" 
end 

을 원하는 경우

그래서 이런 식으로 뭔가가 작동해야하지만 당신은 :host 옵션을 정의해야합니다. See here

관련 문제