, поэтому, если мы посмотрим на этот URL, у нас будут разные части
http://localhost:3000/search?keyword=bread
http://localhost:3000
- это базовый URL
/search
- это путь, а
?keyword=bread
- это то, что мы называем строкой запроса (все после ?
в URL-адресе)
Теперь, когда вы отображаете форму поиска, это то, для чего вам нужно создать маршрут, так что индекс для рецептов) .
# routes.rb
resources :restaurants, only: :index
Там вы отображаете форму. Теперь важно, чтобы
- это форма, которая выдает GET-запрос
- , этот запрос на получение будет go до
recipes#index
тоже
После того, как вы отправите форму, она присоединит строку запроса к URL, и вы сможете обработать ее в контроллере.
Форма может выглядеть примерно так (вы должны использовать помощник по формам)
# views/recipes/index.html.erb
<form action="/recipes" method="get">
<input type="text" name="keyword" placeholder="What are you looking for?">
<input type="submit">
</form>
Тогда входящий http-запрос будет иметь следующий URL-адрес
GET /recipes?keyword=something_you_typed
И в контроллере вы можете обрабатывать его так:
# controllers/recipes_controller.rb
def index
if params[:keyword]
@recipes = Recipe.where(name: params[:keyword])
else
@recipes = Recipe.all
end
end