В моем приложении есть поисковая форма для всего сайта. html .erb. Что означает go для действия #search в моем контроллере. Вместо этого он постоянно пытается go показать #. Я попробовал кучу хаков, чтобы понять почему, и все они перебор. Любое руководство будет наиболее ценно.
Попытки:
- Я отбросил все обратно для исследования и просто отобразил: «ОК» в контроллере, переходя прямо к маршруту в браузере, и он все еще представляет # show action.
- Я перезагружал сервер несколько раз.
- Исправлен
collect do syntax in routes.rb
для однострочного жесткого маршрута get 'lists/search' => 'lists#search', as: 'search_lists'
- Проверено в консоли rails чтобы проверить, работает ли Searchkick,
List.search "*"
возвращает ожидаемые результаты - Я случайно поместил
def search
в приложение / контроллер, не знаю почему, но я подумал, что увижу, если это так.
application. html .erb
<%= form_with(url: search_lists_path , method: 'get', local: true) do %>
<%= text_field_tag :search, params[:search] %>
<%= submit_tag('Search') %>
<% end %>
search. html .erb
<%= content_tag(:h1, "Search Results") %>
<% @list.each do |list| %>
<%= list.name %>
<% end %>
rout.rb
Rails.application.routes.draw do
resources :lists
resources :lists do
collection do
get 'search'
end
resources :products
resources :comments
end
root 'lists#index'
end
контроллер
class ListsController < ApplicationController
def search
render plain: "OK"
end
def index
@list = List.all
end
def show
@list = List.find(params[:id])
end
Выдержка из маршрутов рельсов
search_lists GET /lists/search(.:format) списки # search