0

コントローラー、モデル、ビュー(Gears Model)にファセット設定を使用して、黒点検索を行うインデックスページ設定があります。

アプリケーションのホームページに別の検索フォーム(別のビューとコントローラー)を配置しようとしていますが、フォームでユーザーをGearsModelの検索結果のインデックスページにリダイレクトしたいと思います。現在、ルートページはコントローラーのない静的ページです。検索結果を渡してビューをリダイレクトするにはどうすればよいですか?

私はこれを間違って考えているかもしれません、どんな助けでもありがたいです。

私のコード...

ルート

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 %>
4

2 に答える 2

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 %>
于 2012-07-20T07:17:08.077 に答える
0

@gears は index アクションのインスタンス変数なので、ビュー ファイルで使用できます。従来のコントローラー/ビュー/モデルの外にあるビューをレンダリングできます。

これが役に立ちますように、index アクションの最後に書いてください:

render '/path/to/rails/app/views/books/edit.html.erb'
于 2012-07-20T07:16:00.107 に答える