2015-09-04 2 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 # показать не удалось найти пользователя с 'ид' = # 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 %> 

вы бросаете идентификатор результата в помощник user_path(), который будет genreate/user/12

+0

он работает, но после щелчка по ссылке я получаю сообщение об ошибке - похоже, мне нужно добавить некоторые детали к моему вопросу – electrify

+0

WHICH errormessage? –

+1

Если вы нажмете на ссылку, то/url/user/1337 - так что идя в profile_controller, и действие будет «def show». –

Смежные вопросы