2017-01-06 7 views
0

現在、ジオコーダを使用して画像をフィルタリングしています。その上に、カテゴリフィルタを追加します(ドロップダウン選択タイプではありませんが、各カテゴリはボタンをクリックするとcategory_idが選択されます)。Rails - ジオコーダ検索の上にフィルタを作成する

私のすべてのカテゴリと場所検索の入力ボックスを一覧表示するサイドバーがあるとします。

これはこれまで私が行ってきたことです。あなたは上記のコードを見ることができるように

#index.html.erb 
 

 
<%= form_tag images_path, :method => :get do %> 
 
    <p> Location<br> 
 
    <%= text_field_tag :search, params[:search] %> 
 
    <% submit_tag "Search", :name => nil %> 
 
    </p> 
 
<% end %> 
 

 
<% @categories.each do |cat| %> 
 
    <%= link_to cat.name %> #then i don't know what to do to get the cat.id link back to the controller 
 
<% end %> 
 

 
<% @images.each do |image| %> 
 
    <%= image_tag image.picture.url %> 
 
<% end %> 
 

 
I have the location filter form and below that, it lists out the appropriate images.

# imagescontroller 
 

 
def index 
 
    #@categories = Category.all 
 
    if params[:search].present? 
 
     @users = User.near(params[:search], 50, :select => "users.*, images.*").joins(:images) 
 
     @images = Image.joins(:categories).where(categories: { id: 3 }).joins(:users).merge(@users).distinct 
 
    else 
 
     @images = Image.joins(:categories).where(categories: { id: 3 }) 
 
    end 
 
end

は、私が第三のカテゴリーにカテゴリをハードコードが、コードは正常に実行されないとき、私は、入力位置を。

背景ストーリー:

  • 各画像は各ユーザーが多くの画像を持つことができ、多くのユーザーを持つことができます。
  • 各ユーザーには住所があり、特定の場所に近いユーザーがいる画像を探すためにジオコーダーを使用します。
  • 各画像には多くのカテゴリがあり、各カテゴリには多数の画像があります。
  • は唯一の5つのカテゴリー

あります今すぐ質問です:ユーザーは、むしろ私はそれをハードコーディングするよりも、カテゴリを選択することができるように私は、カテゴリのフォームを作ることができますか。ページを更新せずにページをロードします。そして、私はjQueryとAjaxに関する知識はほとんど持っていませんが、私はもっとそれを見ていきたいと思っています。

どれソリューション、提案や指導が評価されています:)

答えて

0

を私は解決策を見つけました! 私はこの

<li><%= link_to "categoryname1", images_path(category: 'category name", search: params[:search]) %> </li>

キーは、画像コントローラで同様

リストで、検索のparamsを追加することであるようにビューをリンクすることができ、私は、コードを編集しました。私は、さまざまな状況に基づいて、異なる結果を得るために、コントローラにelse文場合に使用 (すなわち、検索やカテゴリparamsが...両方が存在する場合)

category = Category.where('lower(name) = ?', params[:category].downcase).first 
 
    category_id = category.id unless category.nil? 
 
    @images = Image.joins(:categories).where(categories: { id: category_id })

関連する問題