如何根据Rails 3.0.x中的表单选项指定响应格式

And*_*ndy 4 webforms ruby-on-rails prawn prawnto ruby-on-rails-3

环境:Rails 3.0.4和Ruby 1.9.2

我有以下表格:

<%= form_tag( {:action => 'show', :format => :pdf}, :method => :post) do %>

.. list of items ...

<%= submit_tag "Show", :onclick => "return checkAllFields(4);", :remote => true %> 

<select name="format">
    <option name="HTML">HTML</option>
    <option name="PDF">PDF</option>
</select>) 

<% end %>
Run Code Online (Sandbox Code Playgroud)

如您所见,我已在URL中将格式指定为"pdf".我想要的是根据select选项从控制器请求HTML或PDF响应.这两个查询都是单独工作的,即我可以渲染HTML或PDF但不能使其成为动态用户选择.(我甚至无法使用两个单独的硬编码按钮)

控制器代码很明显

def show
  # code to locate items here

  respond_to do |format|
    format.html
    format.pdf { render :layout => false }
      prawnto :filename => "list.pdf", :prawn => { }
  end 
end
Run Code Online (Sandbox Code Playgroud)

Mic*_*ley 7

我会尝试以下方法:

首先,您可能需要:format => :pdf从表单标记中删除硬编码(因为它可能会覆盖下面的选项).

接下来,确保select标记传递正确的值.你可以使用一个助手:

select_tag :format, options_for_select([["HTML", "html"], ["PDF", "pdf"]], "html")
Run Code Online (Sandbox Code Playgroud)

返回类似以下HTML的内容:

<select id='format' name='format'>
  <option value='html' selected='selected'>HTML</option>
  <option value='pdf'>PDF</option>
</select>
Run Code Online (Sandbox Code Playgroud)