У меня есть следующие частичные. Он может быть вызван из трех раз в представлении следующим образом:Как я могу динамически вызывать именованный маршрут в: частичном в рельсах?
<%= render :partial => "contact_event",
:collection => @contacts,
:locals => {:event => email} %>
Второй раз:
<%= render :partial => "contact_event",
:collection => @contacts,
:locals => {:event => call} %>
третий раз:
<%= render :partial => "contact_event",
:collection => @contacts,
:locals => {:event => letter} %>
В каждом случае, вызов, электронная почта, письмо обратитесь к конкретному экземпляру модельного вызова, электронной почты или письма.
Вот что я пытался сделать и концептуально, что бы я хотел сделать: назначьте маршрут на основе имени класса, которое было передано в: event из: partial.
Что я сделал, так это то, что должно быть на самом деле. «Текст» этого является правильным, но, похоже, не признает его как именованный маршрут.
<!-- provide a link to skip this item -->
<% url = "skip_contact_#{event.class.name.tableize.singularize}_url" %>
<%= link_to_remote "Skip #{url} Remote",
:url => send("#{url}(contact_event, event)")
:update => "update-area-#{contact_event.id}-#{event.id}" %>
<span id='update-area-<%="#{contact_event.id}-#{event.id}"%>'> </span>
Результат выше: когда событие было передано экземпляр электронной почты, например, он говорит:
skip_contact_email_url не метод.
Адрес направо, но он не распознается как способ.
Как я могу определить динамически skip_contact_email_url быть skip_contact_letter_url, если локальная переменная буква?
Еще лучше, как я могу получить один именованный маршрут, который бы сделал соответствующее действие?
Могу ли я динамически присваивать значение в событии? это то, что я хочу сделать .... – Angela
значение для события происходит через: locals hash – Angela
Да, вы назначаете любой объект ActiveRecord как ': event', а затем его используете. См. Править. – Voyta