0

足場テントを備えた最も単純なレールアプリがあります

ここに私のコントローラー#インデックス

  def index
    @tents = Tent
    @tents = @tents.where(:brand => params[:brand]) if params[:brand]
    @tents = @tents.where(:season => params[:season]) if params[:season]
  end

scaffold によって生成された標準も表示

ここで検索魔女はデータをフィルタリングする必要があります

  = form_tag tents_path, method: :get do

    = label_tag "manufacturer"
    = select_tag :brand, options_for_select(...), include_blank: true

    = label_tag "seasons"
    - Tent.pluck(:season).each do |season|
      =check_box_tag 'season', season 
      =h season

    = submit_tag 'Submit'

問題 1:

送信元で、パラメーターが選択されていない (select または checl_boxes) 場合、このパラメーターを送信したくありませんが、空の状態で送信されます

GET /tents?utf8=...&brand=&season=&commit=Submit

問題 2:

複数のチェックボックスをチェックすると、get リクエストは次のようになります

GET /tents?utf8=...&brand=Brand&シーズン=4&シーズン=3&commit=Submit

この後、両方の値に対してデータが選択されると予想されますが、コントローラーは両方の値がフィールドにあると予想し、ゼロの結果を返します

何か提案はありますか?

アップデート

おそらく私の質問はrailscasts-111(高度な検索フォーム)で解決されました

4

2 に答える 2

0

問題 2 について: 以下のように季節のチェックボックスを指定する必要があります。

     =check_box_tag 'season[]', season

しかし、私はそれをテストしませんでした

于 2013-10-06T19:03:15.323 に答える