在 rails 中将 index.html 与带有 searchkick 的搜索集成
integrating index.html with search with searchkick in rails
这里是 rails 的新手。我在下面有一个用户控制器的正常索引页面。
我刚刚使用搜索踢和弹性搜索将搜索添加到我的应用程序。
如何合并两个独立的代码块以在一个视图中协同工作 (index.html.erb)?我正在使用 _user 部分进行最终渲染。
目前我收到此错误是因为它们未正确集成。
NoMethodError in UsersController#index
undefined method `each' for nil:NilClass
<div class="container-fluid">
<% @users.each do |user| %>
<div class="col-md-4">
<%= render user %>
</div>
views/user/index.html.erb
搜索块
<div class="books-search">
<h1>Search Books</h1>
<%= form_tag users_path, method: :get do %>
<div class="form-group">
<%= text_field_tag :query, params[:query], class: 'form-control' %>
<%= submit_tag 'Search', class: 'btn btn-primary' %>
</div>
<% end %>
</div>
普通索引块
<div class="container-fluid">
<% @users.each do |user| %>
<div class="col-md-4">
<%= render user %>
</div>
<% end %>
</div>
<%= will_paginate %>
用户控制器
def index
if params[:query].present?
@user = User.search(params[:query])
else
@users = User.paginate(page: params[:page])
end
end
当您发送搜索参数时,您的控制器将执行以下操作:
@user = User.search(params[:query])
而视图需要 @users
变量,而不是 @user
。 @users
为零。
def index
if params[:query].present?
@users = User.search(params[:query]), page: params[:page], per_page: 10
else
@users = User.paginate(page: params[:page], per_page: 10)
end
end
那么在你看来(index.html.erb)
使用这个@users 实例变量遍历每个用户
这里是 rails 的新手。我在下面有一个用户控制器的正常索引页面。
我刚刚使用搜索踢和弹性搜索将搜索添加到我的应用程序。
如何合并两个独立的代码块以在一个视图中协同工作 (index.html.erb)?我正在使用 _user 部分进行最终渲染。
目前我收到此错误是因为它们未正确集成。
NoMethodError in UsersController#index
undefined method `each' for nil:NilClass
<div class="container-fluid">
<% @users.each do |user| %>
<div class="col-md-4">
<%= render user %>
</div>
views/user/index.html.erb
搜索块
<div class="books-search">
<h1>Search Books</h1>
<%= form_tag users_path, method: :get do %>
<div class="form-group">
<%= text_field_tag :query, params[:query], class: 'form-control' %>
<%= submit_tag 'Search', class: 'btn btn-primary' %>
</div>
<% end %>
</div>
普通索引块
<div class="container-fluid">
<% @users.each do |user| %>
<div class="col-md-4">
<%= render user %>
</div>
<% end %>
</div>
<%= will_paginate %>
用户控制器
def index
if params[:query].present?
@user = User.search(params[:query])
else
@users = User.paginate(page: params[:page])
end
end
当您发送搜索参数时,您的控制器将执行以下操作:
@user = User.search(params[:query])
而视图需要 @users
变量,而不是 @user
。 @users
为零。
def index
if params[:query].present?
@users = User.search(params[:query]), page: params[:page], per_page: 10
else
@users = User.paginate(page: params[:page], per_page: 10)
end
end
那么在你看来(index.html.erb)
使用这个@users 实例变量遍历每个用户