Rails Ransack - 如何显示空结果?

时间:2015-11-16 21:09:25

标签: ruby-on-rails ransack

我已将Ransack集成到我的Rails应用程序中,我通过ajax帖子使用它,soso index.html.erb它使用_partner.html.erb 但是当我找回空的搜索结果时,我想要显示一个"没有结果"文本。

我已经尝试过这种方式(在index.js.erb中):

$('#partners_list').html('<% if @partners %> <%= escape_javascript render(@partners) %> <% else %><li class="collection-item">No result</li><% end %>');
$('nav.pagination').html('<%= escape_javascript(paginate(@partners, :remote => true).to_s) %>');

但这不起作用,因为如果没有任何搜索结果,它将生成此javascript代码:

$('nav.pagination').html('  ');
$('nav.pagination').html('');

这不会在<li>中插入任何<ul>个元素 (index.html.erb

<ul id="partners_list" class="collection margin-0-minus-15 z-depth-2">
   <%= render @partners %>
</ul>

(我已尝试在index.html.erb处理此处,但似乎没有搜索结果,则@partners不存在...因为<%= debug(@partners) %>如果搜索结果为空,则不会在视图上显示任何内容)

这是我的操作

def index
    @search = Partner.where(is_active: true).search(params[:q])
    @partners = @search.result.includes(:user, :county).order(created_at: :desc).page(params[:page])
  end

当我使用空结果进行后端搜索响应时,如何实现&#34;空结果&#34;文本?

1 个答案:

答案 0 :(得分:0)

您是否尝试过html之外的if else语句(&#39;&#39;)?

<% if @partners.any? %>
  $('#partners_list').html("<%= j render(@partners) %>")
<% else %>
  $('#partners_list').html("<li class="collection-item">No result</li>")
<% end %>