2010-06-16 49 views
4

在我的部分模板中,有一個名爲「resource」的變量,它可能是一個問題或答案。如何創建一個restful資源的「編輯」網址?

我想建立一個鏈接編輯它,但是當我使用它,我不知道它是什麼,所以我不能寫:

<%=link_to 'edit', edit_question_url(resource)%> 

<%=link_to 'edit', edit_answer_url(resource)%> 

我不知道是否有這樣的方法,說:「url_for_edit()」,可作爲:

<%=link_to 'edit', url_for_edit(resource)%> 

有沒有這樣的方法?隨着應用程序引發的異常,如果resource無效,第一種方法

def edit_question_or_answer_url(resource) 
    send "edit_#{resource.class.name.underscore.pluralize}_url".to_sym, resource 
end 

回答

0

你可以這樣創建ApplicationHelper一個幫手:

def edit_question_or_answer_url(resource) 
    return edit_question_url(resource) if resource.kind_of? Question 
    return edit_answer_url(resource) if resource.kind_of? Answer 
    raise ArgumentError.new "unknown resource: #{resource.class.name}" 
end 

或者通過元編程。在第二個例外是隻有當resource不是資源

我沒有測試這個代碼,但我認爲是100%正確的。

希望這會有所幫助。

+0

你的答案是確定的,但太複雜polymorphic_url(resource)。 'polymorphic_url'要簡單得多。非常感謝。 – Freewind 2010-06-16 12:52:28