Форма Rails собирается создать действие вместо действия индекса - PullRequest
0 голосов
/ 23 мая 2018

Я пытаюсь создать форму поиска, которая возьмет результат и вставит параметр в индекс контроллера поиска.Однако, несмотря на то, что я указал метод get в форме, я получаю сообщение об ошибке The action 'create' could not be found for SearchController, хотя пытаюсь загрузить индекс.

home / index.html.erb

<%= form_tag(controller: "search", :url => search_index_path, :method 
=> :get) do %>
<%= label_tag(:name, "Search for:") %>
<%= text_field_tag(:name) %>
<%= submit_tag("Search") %>
<% end %>

search_controller.rb

class SearchController < ApplicationController
  def index
    @search = Tmdb::Search.tv(params[:name])
  end
  def show
  end
end

rout.rb

Rails.application.routes.draw do
 root 'home#index'
 resources :home
 resources :search
end

Форма вывода:

<form action="/search?method=get" accept-charset="UTF-8" method="post" abineguid="2F75F785E35A4ED5B614E26762C7B53B"><input name="utf8" type="hidden" value="✓"><input type="hidden" name="authenticity_token" value="6dKa4a+vBvybu9b4eYwuEqx9dNcvadCyqRz7ox+ggW2YVAWq6Y8BWVNHx8nDWJbnQ4hTl5OTi3TSkjUfFuHbCQ==">
<label for="name">Search for:</label>
<input type="text" name="name" id="name">
<input type="submit" name="commit" value="Search" data-disable-with="Search">
</form>

Спасибо за помощь!

1 Ответ

0 голосов
/ 24 мая 2018

Ваш вызов form_tag неправильный.

form_tag (url_for_options = {}, options = {}, & block)

вы передаете все параметры url_for_options,в том числе: метод.Вы должны сделать:

<%= form_tag({ controller: "search", action: "index" }, { :method 
=> :get }) do %>

Или проще:

<%= form_tag(search_index_path, :method => :get) do %>
<%= label_tag(:name, "Search for:") %>
<%= text_field_tag(:name) %>
<%= submit_tag("Search") %>
<% end %>

См .: https://apidock.com/rails/ActionView/Helpers/FormTagHelper/form_tag

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