2012-07-20 61 views
0

我有一個索引頁面設置,它在控制器,模型和視圖(齒輪模型)中使用分面設置進行太陽黑子搜索。將搜索結果從一個控制器傳遞到另一個

我試圖在我的應用程序(不同的視圖和控制器)的主頁上放置不同的搜索表單,但我希望表單將用戶重定向到Gears Model的搜索結果的索引頁面。現在,根頁面是一個沒有控制器的靜態頁面。如何傳遞搜索結果並重定向視圖?

我可能會考慮這個錯誤,任何幫助表示讚賞。

我的代碼...

路線

Outdoor::Application.routes.draw do 

    resources :gears do 
    resources :calendars, :only => [:create, :destroy, :edit] 
    resources :comments, :only => [:create, :destroy] 
    end 

    match '/gear', to: "gears#index" 

    root to: 'pages#home' 
end 

控制器

class GearsController < ApplicationController 

    respond_to :html, :json 

    def index 
    @search = Gear.solr_search do 
     fulltext params[:search]   
     facet (:category_name) 
     facet (:sub_category_name) 
     facet (:state) 
     facet (:city) 
     facet (:price) 
     with(:price, params[:price]) if params[:price].present? 
     with(:state, params[:state]) if params[:state].present? 
     with(:city, params[:city]) if params[:city].present? 
     with(:sub_category_name, params[:name]) if params[:name].present? 
     with(:category_name, params[:categoryname]) if params[:categoryname].present? 
     paginate(page: params[:page], :per_page => 15) 
    end 

    @gears = @search.results 
    end 
end 

主頁查看錶格(我並沒有改變它使用的形式助手還)

 <form id="homesearch_form" > 
      <fieldset> 
       <input type="text" name="homesearchbox" id="homesearch_textarea" onfocus="if(this.value=='Enter the location you’d like to rent gear')this.value='';" value="Enter the location you’d like to rent gear" onblur="if(this.value=='')this.value='Enter the location you’d like to rent gear'"/> 
        <input type="submit" id="homesearch_submit" value="" /> 
      </fieldset> 
      <fieldset id="rentaldate_home" class="form-inline"> 
       <input type="text" name="rentaldate_home_from" id="rentaldate_home_from" onfocus="if(this.value=='From')this.value='';" value="From" onblur="if(this.value=='')this.value='From'" /> 
        <input type="text" name="rentaldate_home_to" id="rentaldate_home_to" onfocus="if(this.value=='To')this.value='';" value="To" onblur="if(this.value=='')this.value='To'" /> 

      </fieldset> 
    </form> 

感謝您的幫助。

解決

我改變了形式,在我的主頁下面:

<%= form_tag({:controller => "gears", :action => "index"}, :method => "get", :id => "homesearch_form") do %> 
     <%= text_field_tag :search, params[:search], id: 'homesearch_textarea' %> 
     <%= submit_tag "", :name => nil, id: 'homesearch_submit' %> 
    <% end %> 

回答

1

從我個人理解,你想有你的索引頁上的搜索形式,但搜索結果不能在呈現索引頁面,但在齒輪索引頁面?這應該是很簡單的,只是包括在本頁面相同的形式,最好用偏不可複製代碼:

http://railscasts.com/episodes/278-search-with-sunspot

<%= form_tag articles_path, :method => :get do %> 
    <p> 
    <%= text_field_tag :search, params[:search] %> 
    <%= submit_tag "Search", :name => nil %> 
    </p> 
<% end %> 
+0

感謝您的幫助。我接受了你的評論。我發佈了什麼工作。 – DaveG 2012-07-20 13:58:58

0

@gears是在索引操作實例變量,所以它可以查看文件。您可以渲染常規控制器/視圖/模型之外的視圖。

願這幫助你,把它寫在你的索引行動的結束:

render '/path/to/rails/app/views/books/edit.html.erb' 
相關問題