【问题标题】:Link to the Model element from search results (Chewy, Rails)从搜索结果链接到模型元素(Chewy、Rails)
【发布时间】:2015-11-30 15:54:09
【问题描述】:

我已经实现了对用户模型的搜索(使用 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

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

更新:

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

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

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

ActiveRecord::RecordNotFound in ProfilesController#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

【问题讨论】:

  • 你能澄清你的问题吗?这与耐嚼或弹性搜索有关吗?您只需要知道如何在视图中创建链接吗?
  • na id 没有。它只是一个标准的 Rails 问题,imo
  • 标准导轨问题,对

标签: ruby-on-rails search elasticsearch views chewy-gem


【解决方案1】:

查看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

【讨论】:

  • 它可以工作,但点击链接后我收到一个错误 - 看起来我需要在我的问题中添加一些细节
  • 如果您点击链接,则 url 为 /user/1337 - 这将进入profiles_controller 并且操作为“def show”。
  • ActiveRecord::RecordNotFound in ProfilesController#show 找不到具有 'id'=# 的用户 <:user:0x007fa1050ebed0> profiles_controller: def show @user = User.find(params[:id ]) 结束结束
  • 所以让我们面对现实吧。您要求提供模型的链接,我们回答了。显然您需要更改为 user_path(r.id) 或在您的模型中覆盖 def to_params
猜你喜欢
  • 1970-01-01
  • 2012-08-07
  • 2011-03-20
  • 1970-01-01
  • 2011-10-09
  • 2016-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多