私はRubyonRailsにかなり慣れていないので、個人的なプロジェクトとしてディレクトリタイプのWebサイトを作成しています。
私のアプリでは、ユーザーが近くの場所や場所を検索できるようにジオコーダー検索を実装しました。検索は完璧に機能しました。しかし、利用可能な場所の種類を分類するためにタブ付きメニューを追加すると、検索が失敗しました。
なぜ壊れているのかはわかっていると思いますが、修正方法がわかりません。タブには@schools、@ restaurants、および@businesses変数が表示されていますが、これらの変数ではなく検索結果を表示するようにタブを取得するにはどうすればよいですか?これらの変数は、検索が実行されていない場合にのみ表示されますが、検索が実行された場合にも表示されます。
これが私のコードです:
配置コントローラー:
class PlacesController < ApplicationController
before_filter :authenticate_user!, except: [:index]
def index
if params[:search].present?
@places = Place.near(params[:search], 50, :order => :distance)
else
@places = Place.all
end
@schools = Place.where("category = ?", "School")
@restaurants = Place.where("category = ?", "Restaurant")
@businesses = Place.where("category = ?", "Business")
end
Places Index.html.erb:
<% if user_signed_in? %>
<div class="row">
<h2>Newly Added Places</h2>
<%= form_tag places_path, :method => :get do %>
<%= text_field_tag :search, params[:search], placeholder: "Enter your zipcode or city", class: "search-query" %>
<%= submit_tag "Search Nearby", :name => nil, class: "btn"%>
<% end %>
<ul class="nav nav-tabs">
<li><a href="#tab1" data-toggle="tab">Schools</a></li>
<li><a href="#tab2" data-toggle="tab">Restaurants</a></li>
<li><a href="#tab3" data-toggle="tab">Businesses</a></li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="tab1">
<%= render :partial => "places", :locals => {:places_container => @schools} %>
</div>
<div class="tab-pane" id="tab2">
<%= render :partial => "places", :locals => {:places_container => @restaurants} %>
</div>
<div class="tab-pane" id="tab3">
<%= render :partial => "places", :locals => {:places_container => @businesses} %>
</div>
</div>
</div>
<br />
<% else %>
<%= render 'static_pages/home' %>
<% end %>
部分的な場所(_places.html.erb):
<table class="table table-hover table-condensed">
<thead>
<tr>
<th>Image</th>
<th>Name</th>
<th>Address</th>
<th>State</th>
<th>City</th>
<th>Type</th>
<th>Website</th>
</tr>
</thead>
<% places_container.each do |place| %>
<tr>
<th><%= image_tag place.image(:medium)%></th>
<th><%= link_to place.name, place %></th>
<td><%= place.address %></td>
<td><%= place.state %></td>
<td><%= place.city %></td>
<td><%= place.category %></td>
<td><%= place.website %></td>
<% if current_user.admin? %>
<td><%= link_to 'Edit', edit_place_path(place) %></td>
<td><%= link_to 'Destroy', place, method: :delete, data: { confirm: 'Are you sure?' } %></td>
<% end %>
</tr>
<% end %>
</table>