RoR Ransack搜索问题

时间:2013-02-28 22:55:22

标签: ruby-on-rails controllers ransack

我有两个不同的控制器(scholarships_controller,scholarships_browse_controller)来看奖学金模型。我希望我的Ransack搜索功能在当前页面上显示搜索结果。所以,例如,如果我在/ scholarships_browse并且我使用搜索功能,我希望它使用scholarships_browse_controller并在/ scholarships_browse上显示结果。

目前,如果我搜索/ scholarships_browse,它会使用scholarships_controller并重定向到/奖学金以显示结果(而不是/ scholarships_browse)。

奖学金代码浏览控制器和奖学金控制器

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时,如何确保我使用ScholarshipsBrowseController索引而不是ScholarshipsController索引?

1 个答案:

答案 0 :(得分:12)

在你看来:

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

search_form_for form_for的扩展名,因此您可以使用:url参数告诉表单应该采取什么操作(您可以查看页面来源)在浏览器上呈现代码时,您可以检查代码<form action="">以确保它指向正确的路线。

相关问题