我想在用户点击"Search"按钮时呈现表单的结果。
我想我错过了一些模型(我真的不知道我是否必须在我的用户模型上添加一些东西)或Html。
有一个控制器:Searchscontroller
class SearchsController < ApplicationController
def index
if params[:city].present?
@searchs = User.near(params[:city], params[:distance] || 10, order: :distance)
else
@searchs = User.all
end
end
和search.html.erb
中的表单<%= form_tag search_path, method: :get do %>
<%= label :user, "Search User near : " %>
<%= text_field_tag :city, params[:city] %>
<%= label :distance, "Distance : " %>
<%= text_field_tag :distance, params[:distance] %>
<%= submit_tag "Search" %>
<% end %>
#NOT SURE WITH THAT PART, I think its not working, just the %else is displayed#
<div>
<% if @searchs.present? %>
<%= render @searchs %> # it might be @users instead ? #
<% else %>
<p>Oops no user around <%= params[:city] %>.</p>
<% end %>
</div>
我的用户已经找到了宝石地理编码器,那部分很好,我得到了经度和纬度(和DB中的城市,它在控制台User.Near(' city ')中工作),但我只是想显示结果列表,就像这样,当我点击表单:
伦敦周边/距离10公里=>>搜索<<br>Result
> @user 1
> @user 2
我希望有人能帮我找到答案,提前谢谢你
Route.rb
Rails.application.routes.draw do
devise_for :users
resources :users, only: [:index, :show]
root "pages#home"
get "search" => "pages#search"
基本上,我改变了搜索文件的文件夹>"求索/search.html.erb"route中的route。rb: get "search" => "searchs#search"
<%= form_tag search_path, method: :get do %>
<%= label :user, "Search User near : " %>
<%= text_field_tag :city, params[:city] %>
<%= label :distance, "Distance : " %>
<%= text_field_tag :distance, params[:distance] %>
<%= submit_tag "Search" %>
<% end %>
类还是一样的,只是将def "index"重命名为"search":
class SearchsController < ApplicationController
def search
if params[:city].present?
@searchs = User.near(params[:city], params[:distance] || 10)
else
@searchs = User.all
end
end
end
和主要的问题是在表单的末尾显示结果的div(前面的代码正在寻找部分_search.html)。erb,我没有创建它,所以我写了这个,来直接显示表单的结果。
<div>
<table>
<tr>
<th>Nickname</th>
<th>City</th>
</tr>
<% @searchs.each do |search| %>
<tr>
<td><%= search.nickname %></td>
<td><%= search.city %></td>
</tr>
<% end %>
</table>
</div>
我仍然不知道如何显示结果,只有当我点击"搜索"按钮(它只是刷新表单现在),但我有一个想法与部分_form的结果。如果有人有解决方案,请在评论中添加;)