0

UsersMetaSearch を使用して検索フォームでフィルター処理したいインデックス ページがあります。ただし、チェックボックスをクリックしたときに検索したい値は文字列として保存されます。たとえば、MetaSearch を適用したいフォームは次のとおりです。

<% form_for(current_user.profile) do |f| %>
<table id="careerCriteria">
  <tr>
    <td class="normal"><%= current_user.profile.hometown %></td>
    <td><%= check_box_tag :hometown %></td>
  </tr>
  <tr>
    <td class="normal"><%= current_user.profile.current_city %></td>
    <td><%= check_box_tag :current_city %></td>
  </tr>
  <tr>
    <td class="normal"><%= current_user.profile.past_city %></td>
    <td><%= check_box_tag :past_city %></td>
  </tr>
</table>
<% end %>

私のユーザーモデル:

class User < ActiveRecord::Base
  has_one :profile, :dependent => :destroy
end

検索ボタンを使いたくない。チェックボックス(またはチェックボックス)がクリックされたときにフィルターを適用したい。私はプログラミングが初めてなので、助けていただければ幸いです!

4

1 に答える 1

1

これを実現するには、少しajaxとクエリが必要です。

チェックボックスにフォームを送信させる方法を示す良い記事があります。

http://trevorturk.com/2010/08/24/easy-ajax-forms-with-rails-3-and-jquery/

実行したいのは、検索を処理するアクションをコントローラーに作成することです。これが検索アクションの例です...

def search
    if params[:term].blank?
        raise "You must provide search criteria."
    end

    params[:term] = "%#{params[:term]}%"
    conditions    = " Description LIKE :term"

    @careers = Career.all(
        :conditions => [conditions, params],
        :offset     => params[:offset],
        :limit      => params[:limit]
    )

    respond_with @careers
end

また、このアクションのこの検索のルートを設定する必要があります。

resources :careers do
    get "search/:term/:offset/:limit.:format", :action => "search", :constraints => { :offset => /\d+/, :limit => /\d+/ }
end

このアクションを送信するフォームを取得すると、jQueryを使用して結果を更新できるようになります。

ここで、AjaxとjQueryを使用して結果をロードしたくない場合は、フォームタグからリモートアクションを実行するだけで、ページ全体が更新されることに注意してください。

于 2011-09-16T07:09:23.050 に答える