4

環境:Rails3.0.4およびRuby1.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のいずれかをレンダリングできますが、動的なユーザー選択を行うことはできません。(2つの別々のハードコードされたボタンで動作させることさえできません)

コントローラコードは明らかに

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 に答える