Как указать формат url_for во вложенном маршруте?

Следующий оператор link_to:

  <%= link_to image_tag("icons/document_24.png"),
              [program_code.program, program_code],
              :class      => :no_hover,
              :alt        => "Print Tracking Code",
              :title      => "Print Tracking Code",
              :target     => :new
  %>

будет генерировать URL-адрес /programs/1/program_codes/1

Если я хочу, чтобы URL-адрес был /programs/1/program_codes/1.svg, как мне указать формат в массиве, который передается url_for? Я искал документацию API Rails и рассмотрел несколько примеров, но не смог найти ничего подобного.

ruby-on-rails,routing,link-to,nested-resources,url-for,

0

Ответов: 2


1 принят

Я думаю, что вы ищете вариант формата . Он добавит расширение файла к ссылке, например '.svg'

Удостоверьтесь, что вы поместили опцию: format в хэш-схеме построения пути метода link_to.

<%= link_to 'somewhere', {somewhere_to_path(@var), :format => "svg"},:title => "Print Tracking Code", :target => "_blank" %>

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


1

Если вы имеете дело с определенным классом и можете использовать именованный маршрут, это самый эффективный вариант. Но если вы имеете дело с вложенными ресурсами, а родительский ресурс не фиксирован (например, в полиморфной ассоциации), и вы хотите указать формат, url_for не отвечает вашим потребностям.

К счастью, вы можете использовать polymorphic_url.

Например, если это serverможет быть экземпляр ManagedServer или UnmanagedServer, и у обоих могут быть предупреждения, вы можете сделать это:

polymorphic_url([server, :alerts], :format => :xml)

и это даст вам

/managed_server/123/alerts.xml
/unmanaged_server/123/alerts.xml
рубин-на-рельсы, маршрутизация, ссылка-на, вложенные ресурсы, URL-за,
Похожие вопросы