Link 到搜索结果中的模型元素(Chewy,Rails)

Link to the Model element from search results (Chewy, Rails)

我已经实现了用户模型搜索(使用 Chewy gem 的 Elasticsearch)。

views/search/search.html.erb:

<%= form_tag search_path, method: "get" do %>
    <%= label_tag(:q, "Search by name/ surname/ email:") %>
    <%= text_field_tag(:q) %>
    <%= submit_tag("Search") %>
<% end %>

<% @results.each do |r| %>
   <%= r.name %> 
   <%= r.surname %>,
   <%= r.email %>, 
<% end %>

routes.rb:

devise_for :users
resources :users, only: [:show], controller: :profiles

我需要的是为每个搜索结果行添加一个 link 给用户。 (如何将 Chewy 用户索引与用户页面连接起来)

更新:

我将搜索中的最后一段html.erb更改为:

<% @results.each do |r| %>
<%= link_to r.name, user_path(r) %> 
<%= r.surname %>,
<%= r.email %>, 
<% end %>

搜索结果现在可以点击了,但出现以下错误:

ProfilesController 中的 ActiveRecord::RecordNotFound#show 找不到 'id'=#UsersIndex::User:0x007fa1050ebed0>

的用户

我的profiles_controller.rb:

class ProfilesController < ApplicationController
skip_before_action :authenticate_user!

def show
@user = User.find(params[:id])   //this line gets an error
end
end

查看 rake routes,其中列出了所有路线及其名称

resources :name 正在生成所有默认路由(您刚刚在其中 指定制作 show_route)

<% @results.each do |r| %>
   <%= link_to r.name, user_path(r.id) %> 
   <%= r.surname %>,
   <%= r.email %>, 
<% end %>

或者,也许更高级

<% @results.each do |r| %>
   <%= link_to user_path(r.id) do %> 
     <%= r.name %>,
     <%= r.surname %>,
     <%= r.email %>
   <% end %> 
<% end %>

您将结果的 ID 放入 user_path() 帮助程序,这将生成 /user/12