2016-08-17 32 views
0

我想在用戶點擊「搜索」按鈕時渲染表單的結果。渲染結果爲Form rails/gem geocoder


我想我缺少一些與模型(我真的不知道我是否必須添加一些東西在我的用戶模型)或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> 

我的用戶已經位於創業板地理編碼器,這部分是好的,我得到了Lat和Longitude(和DB中的城市,它在控制檯User.Near('City')中工作),但我只想顯示一個結果列表,就像這樣當我單擊表單時:

圍繞倫敦/距離10公里=>>搜索<
結果
> @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" 
+0

你可以發佈你的'routes.rb'文件,並且還可以將你的'def index'動作重命名爲'def search'並查看是否有幫助? –

+0

我會用我的route.rb更新這個問題,我會嘗試重命名,謝謝你的回答! –

+0

看起來您可能還需要爲「搜索#搜索」操作添加路由。嘗試添加諸如'get'/ city_search'之類的內容到'searchs#search'。如果你想採取這個聊天,所以我可以進一步詳細解釋如何做到這一切,我會很樂意這樣做。 –

回答

0

所以基本上,我改變我的搜索文件> 「searchs/search.html.erb」 的文件夾,並在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「指數」到「搜索」:

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來顯示結果(前cedent代碼正在尋找部分_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一個想法結果。如果有人爲此獲得瞭解決方案,請將其添加到評論中;)