Railsで検索条件などを作成する場合に躓いたところをメモするよ。へっぽこプログラマなのでつまらないことで躓いている点には生暖かい目で見ていただけるとうれしいです。
1.モデルにひも付かない form_tag を使用する。
2.form_tagではオブションのデフォルトが :method => post となっているため、:action で適切に指定しても
処理がcreateとなってしまう。そのため、オプションで :method には 'get' をつける必要がある。
[sourcecode language="ruby"]
<%= form_tag({:controller => 'ledgers', :action => 'index'}, {:id=>'fm', :class=>'search', :method => 'get'}) do %>
<!-- 検索条件1 -->
<div id="search_main">
<div id="search1">
…
</div>
<div id="search2">
…
</div>
<%= submit_tag '検索' %>
</div>
<% end %>
[/sourcecode]
3.日付を検索条件とする場合、select_dateを使用するが、初期状態ではこのパラメータにはフィールド名が
dateとして設定される。そのため、オプションの :prefix でフィールド名を設定してあげるとよい。
[sourcecode language="ruby"] 何らかの日付:<%= select_date(DateTime.now << 1,{:use_month_numbers => true, :date_separator => '/',:prefix => 'date_from'}) %> …
取得方法
params[:date_from][:year]
[/sourcecode]
3以外は、 Ruby on Rails 3 アプリケーションプログラミング に記載されています。なぜ日付のように非常に頻繁に使用する方法をResponseで処理する方法が記述されていないのか疑問ですね。私の探し方が悪いだけでしょうかしら?
とはいうものの、辞書的な使用方法をすることができるのでとても重宝しています。