2015-09-04 21 views
0

我已经实现了用户模型(Elasticsearch使用Chewy gem)的搜索。从搜索结果链接到模型元素(Chewy,Rails)

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

我需要的是一个链接添加到每个搜索结果行的用户。 (如何连接与用户页面嚼用户索引)

更新:

我改变了最后一段中search.html.erb到:

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

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

的ActiveRecord :: RecordNotFound在ProfilesController#秀 找不到用户与 'ID'=#UsersIndex ::用户: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 
+0

您能澄清您的问题吗?这是否与耐嚼或弹性搜索有关?你只需要知道如何在视图中创建链接? – trh

+0

na id没有。它只是一个标准的轨道问题,imo –

+0

标准轨道问题,对 – electrify

回答

1

,看一下rake routes这是列出了所有的路线,他们的名字

资源:名称生成所有的缺省路由(你只是 规定,使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()助手中,该助手将genreate/user/12

+0

它的工作原理,但点击链接后,我得到一个错误 - 它看起来像我需要添加一些细节到我的问题 – electrify

+0

哪些errormessage? –

+1

如果你点击liink url是/ user/1337 - 那么进入profiles_controller并且动作是“def show”。 –