我正在编写一个rails应用程序,用户在谷歌地图上生成标记,然后可以选择将它们下载为.kml文件。事实上,我正在添加一个功能,可以将地图更改为他们在向地图添加特定标记时可以看到的位置。我想使用与以前下载.kml文件相同的表单,但也添加一个额外的提交按钮,除了运行一些控制器逻辑之外什么都不做。我最初有:
<%= form_tag customMapGenerate_path(@device, :format => 'kml'), :method => :get do %>
表示我的form_tag
如何修改我的两个提交链接:
<%= submit_tag 'Download KML' %>
<%= submit_tag 'Display on map' %>
为以下两个条件呈现KML然后不呈现任何内容(并留在页面上):
if(params[:commit] == "Download KML")
respond_to do |format|
format.kml
end
return
elsif(params[:commit] == "Display on map")
//simple ruby code
return
end
答案 0 :(得分:4)
您可以使用button_tag
从form_tag
中删除格式,它应该为您提供类似的内容
<%= form_tag customMapGenerate_path(@device), :method => :get do %>
// your form here
<%= button_tag 'Download KML', value: 'kml', name: 'format' %>
<%= button_tag 'Display on map', value: 'html', name: 'format' %>
<% end %>
然后在您的控制器中,您只需使用respond_to do |format|
来区分两种类型的响应。
答案 1 :(得分:-1)
您可以在操作中设置响应标头以强制浏览器下载文件
response.headers['Content-Type'] = 'application/vnd.google-earth.kml+xml'
response.headers['Content-Disposition'] = 'attachment; filename=map.kml'