Как создать URL «edit» для ресурса restful? - PullRequest
4 голосов
/ 16 июня 2010

В моем частичном шаблоне есть переменная с именем «ресурс», это может быть вопрос или ответ.

Я хочу создать ссылку для редактирования, но когда я ее использую, я не знаю, что это такое, поэтому не могу написать:

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

или

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

Интересно, есть ли такой метод, скажем, "url_for_edit ()", который можно использовать как:

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

Есть ли такой метод?

Ответы [ 2 ]

9 голосов
/ 16 июня 2010

вы можете попробовать polymorphic_url(resource) с префиксом edit_polymorphic_url(resource) http://api.rubyonrails.org/classes/ActionDispatch/Routing/PolymorphicRoutes.html

0 голосов
/ 16 июня 2010

Вы можете создать помощника в 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 isn 'т действительный.Во втором случае исключение возникает только в том случае, если resource не является ресурсом

Я не тестировал этот код, но думаю, что он на 100% правильный.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...