4

环境: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 %>

如您所见,我已在 URL 中指定格式为“pdf”。我想要的是根据选择选项从控制器请求 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
4

1 回答 1

7

我会尝试以下方法:

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

接下来,确保select标签传递了正确的值。您可以使用一个助手:

select_tag :format, options_for_select([["HTML", "html"], ["PDF", "pdf"]], "html")

它返回类似于以下 HTML 的内容:

<select id='format' name='format'>
  <option value='html' selected='selected'>HTML</option>
  <option value='pdf'>PDF</option>
</select>
于 2011-03-02T01:54:27.253 回答