5

奨学金モデルを調べる 2 つの異なるコントローラー (scholarships_controller、scholarships_browse_controller) があります。Ransack 検索機能で、現在のページに検索結果を表示したいと考えています。したがって、たとえば、/scholarships_browse で検索機能を使用する場合、scholarships_browse_controller を使用して /scholarships_browse に結果を表示する必要があります。

現在、/scholarships_browse で検索すると、scholarships_controller が使用され、/scholarships にリダイレクトされて結果が表示されます (/scholarships_browse ではなく)。

ScholarshipsBrowseController および ScholarshipsController のコード

def index  
    @search = Scholarship.search(params[:q])
    @scholarships = @search.result.page(params[:page]).per(3)  #allows 3 scholarships on a page at a time
    @search.build_condition

    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @scholarships }
    end 

終わり

奨学金のコードは index.html.erb を参照してください:

<%= search_form_for @search do |f| %>
    <%= f.condition_fields do |c| %>
        <div class="field">
            <%= c.attribute_fields do |a| %>
                <%= a.attribute_select %>
            <% end %>
            <%= c.predicate_select compounds: false, only: [:cont, :eq, :gt, :lt] %>
            <%= c.value_fields do |v| %>
                <%= v.text_field :value %>
            <% end %>
        </div>
    <% end %>
    <div class="actions"><%= f.submit "Search" %></div>
<% end %>

したがって、具体的には、 /scholarships_browse を使用しているときに ScholarshipsController インデックスの代わりに ScholarshipsBrowseController インデックスを使用していることを確認するにはどうすればよいかを尋ねていると思います。

4

1 に答える 1

12

あなたの見解では:

<%= search_form_for @search, url: RAILS_ROUTEHERE do |f| %>
...
<%- end %>

search_form_forは の拡張子でform_forあるため、:urlパラメーターを使用して、フォームのアクションをフォームに伝えることができます (ブラウザでレンダリングするときにページのソース コードを確認できます。タグ<form action="">をチェックして、それが正しいルート。

于 2013-02-28T23:08:51.230 に答える