使用submit_tag声明格式

时间:2011-10-06 21:11:41

标签: ruby-on-rails ruby-on-rails-3

我正在编写一个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

2 个答案:

答案 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'