0

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

意见/搜索/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 %>

路线.rb:

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

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

更新:

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

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

搜索结果现在可以点击,但我收到以下错误:

ProfilesController#show 中的 ActiveRecord::RecordNotFound 找不到具有 '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
4

1 回答 1

1

看看rake routes哪个列出了所有路线及其名称

资源 :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

于 2015-09-04T13:26:30.843 回答