Ransack Ruby On Rails结果不会呈现

时间:2016-11-16 22:44:52

标签: ruby-on-rails ruby search rubygems ransack

我一直在尝试将Ransack搜索gem实现到我正在进行的项目中。我很确定我已正确设置它。我希望能够搜索配置文件并将我的代码放在配置文件控制器中,如下所示:

def index
 @q = Profile.search(params[:q])
 @profile = @q.result(distinct: true)
 @profiles = Profile.all
end

配置文件index.html.erb文件如下:

<%= search_form_for @q do |f| %>
 <div class="field">
 <%= f.label :first_name_cont, "Name Contains" %>
 <%= f.search_field :first_name_cont %>
</div>
<div class="actions"><%= f.submit "Search" %></div>
<% end %>

它至少似乎正在尝试正确搜索数据库,但只是不会在屏幕上呈现任何结果。这可能是我没有看到的显而易见的事情。非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

在控制器中尝试这样的设置并查看:

 #profile controller
  def index
    @search = Profile.search(params[:q])
    @profiles = @search.result(distinct: true)
  end

  #profile index
  <%= search_form_for @search do |f| %>
    <%= f.label :first_name_cont, "name in profile" %><br>
    <%= f.submit "Search", class:"btn btn-info btn-block" %>
  <% end %>

  <% @profiles.each do |profile| %>
    <%= profile.name %>
  <% end %>

答案 1 :(得分:0)

当您尝试访问@profile时是问题还是只知道如何显示结果?如果是后者,那么它们现在存储在@profile中,因此您需要遍历它们并从每个配置文件实例中选择要显示的内容。

从我使用这个gem开始,它似乎默认为给定类的索引页面(所以在你的情况下,是配置文件索引页面)。所以你可以:

  1. 只需将结果列表放在上面分享的搜索表单下方。
  2. 将搜索栏移动到类似主页控制器的位置,以便在进行搜索时,它会转到配置文件索引页面并仅显示结果。