Действие #search в контроллере отказывается работать и ошибочно переходит на #show - PullRequest
0 голосов
/ 20 апреля 2020

В моем приложении есть поисковая форма для всего сайта. 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...