Как указать формат для url_for во вложенном маршруте? - PullRequest
0 голосов
/ 16 июня 2011

Следующий оператор 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? Я искал документацию по Rails API и просмотрел несколько примеров, но не смог найти ничего подобного.

Ответы [ 2 ]

1 голос
/ 07 декабря 2016

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

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

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

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

и это даст вам

/managed_server/123/alerts.xml
/unmanaged_server/123/alerts.xml
1 голос
/ 16 июня 2011

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

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

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

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

...