以下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
%>
会生成类似/programs/1/program_codes/1
如果我希望网址为/programs/1/program_codes/1.svg
,如何指定传递给url_for
的数组中的格式?我搜索了Rails API文档并查看了几个示例,但却找不到这样的内容。
答案 0 :(得分:1)
我认为您正在寻找:format 选项。它会将文件扩展名附加到链接,例如'.SVG'
确保将:format选项放在link_to方法的路径构建哈希中。
<%= link_to 'somewhere', {somewhere_to_path(@var), :format => "svg"},:title => "Print Tracking Code", :target => "_blank" %>
希望这有帮助。
答案 1 :(得分:1)
如果您正在处理特定的类并且可以使用命名路由,那么这是最有效的选项。但是,如果您正在处理嵌套资源并且未修复父资源(例如,在多态关联中),并且您想要指定格式,则url_for无法满足您的需求。
幸运的是,您可以使用polymorphic_url
。
例如,如果server
可以是ManagedServer或UnmanagedServer的实例,并且两者都可以有警报,则可以执行以下操作:
polymorphic_url([server, :alerts], :format => :xml)
那会给你
/managed_server/123/alerts.xml
/unmanaged_server/123/alerts.xml