我有两个不同的控制器(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索引?
答案 0 :(得分:12)
在你看来:
<%= search_form_for @search, url: RAILS_ROUTEHERE do |f| %>
...
<%- end %>
search_form_for 是form_for
的扩展名,因此您可以使用:url
参数告诉表单应该采取什么操作(您可以查看页面来源)在浏览器上呈现代码时,您可以检查代码<form action="">
以确保它指向正确的路线。