渲染结果为一个Form rails / gem地理编码器



我想在用户点击"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的结果。如果有人有解决方案,请在评论中添加;)

最新更新