Ruby on rails 如何创建一个;编辑";restful资源的url?
在我的部分模板中,有一个变量名为“resource”,它可能是一个问题或答案 我想建立一个链接来编辑它,但当我使用它时,我不知道它是什么,所以我不能写:Ruby on rails 如何创建一个;编辑";restful资源的url?,ruby-on-rails,rest,Ruby On Rails,Rest,在我的部分模板中,有一个变量名为“resource”,它可能是一个问题或答案 我想建立一个链接来编辑它,但当我使用它时,我不知道它是什么,所以我不能写: <%=link_to 'edit', edit_question_url(resource)%> 或 我想知道是否有这样一种方法,比如“url\u for_edit()”,可以用作: <%=link_to 'edit', url_for_edit(resource)%> 有这样的方法吗?您可以在Appli
<%=link_to 'edit', edit_question_url(resource)%>
或
我想知道是否有这样一种方法,比如“url\u for_edit()”,可以用作:
<%=link_to 'edit', url_for_edit(resource)%>
有这样的方法吗?您可以在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
或者通过元编程:
def edit_question_or_answer_url(resource)
send "edit_#{resource.class.name.underscore.pluralize}_url".to_sym, resource
end
对于第一种方法,如果resource
无效,应用程序将引发异常。在第二种情况下,仅当resource
不是资源时才会引发异常
我没有测试这段代码,但我认为它是100%正确的
希望这有帮助。您可以尝试
多态url(资源)
前缀为编辑多态url(资源)
你的答案可以,但太复杂了<代码>多态url要简单得多。还是谢谢你。
def edit_question_or_answer_url(resource)
send "edit_#{resource.class.name.underscore.pluralize}_url".to_sym, resource
end