Я до сих пор новичок в Rails и пытаюсь решить что-то, что я понимаю, немного выше уровня. Моему приложению необходимо принять ввод кода пользователем (хэшированный код события уникальный для события), а затем перенаправить их на страницу показа этого конкретного события, если она найдена. Если он не найден, он отображает ошибку div.
Вместо того, чтобы бросать ошибку, когда я ее тестирую, как и следовало ожидать, она просто указывает мне на общую страницу/показать. Я собрал это вместе примерно из дюжины других сообщений Stack и учебников, и ни один из них не продемонстрировал точно такую функциональность, в которой я нуждаюсь. Мне нужно, чтобы, когда эта форма отправляется, она должна запускать что-то в контроллере, который пытается привязать этот конкретный объект, и в случае успеха перенаправляет его. При устранении неполадок я вытащил эту строку перенаправления в свой контроллер и обнаружил, что она даже не работает, что-то еще указывало на ее/показать. Как мне получить форму, чтобы просто спросить мой метод, что делать? Является ли обычным маршрутом правильный путь?
Прямо сейчас, моя форма выглядит следующим образом:Как отправить форму поиска методу контроллера, который перенаправляет/показывается?
<h2><br/>Input your event code below<br/></h2>
<p>
<form action="<%= lookup_path(:code) %>" method="get" >
<%= text_field_tag(:code, nil, class: "input_field") %>
<%= submit_tag "Submit", :name => nil, :class =>"submit_button" %>
</form>
</p>
<div id="errorbar">
<%= @error_bar %>
</div>`
Мой контроллер в целом заключается в следующем:
class EventController < ApplicationController
def index
end
def lookup
begin
an_event = Event.where(:event_code =>params[:code])
rescue ActiveRecord::RecordNotFound
@error_bar = "Code not found"
end
end
end
И насколько соответствующие части моих маршрутов идут:
resources :event do
resources :room
end
get 'event/:event_code' => 'event#lookup', as: :lookup
Рейк-маршруты:
Prefix Verb URI Pattern Controller#Action welcome_index GET /welcome/index(.:format) welcome#index root GET / welcome#index event_room_index GET /event/:event_id/room(.:format) room#index POST /event/:event_id/room(.:format) room#create new_event_room GET /event/:event_id/room/new(.:format) room#new edit_event_room GET /event/:event_id/room/:id/edit(.:format) room#edit event_room GET /event/:event_id/room/:id(.:format) room#show PATCH /event/:event_id/room/:id(.:format) room#update PUT /event/:event_id/room/:id(.:format) room#update DELETE /event/:event_id/room/:id(.:format) room#destroy event_index GET /event(.:format) event#index POST /event(.:format) event#create new_event GET /event/new(.:format) event#new edit_event GET /event/:id/edit(.:format) event#edit event GET /event/:id(.:format) event#show PATCH /event/:id(.:format) event#update PUT /event/:id(.:format) event#update DELETE /event/:id(.:format) event#destroy lookup GET /event/:event_code(.:format) event#show
Не повезло. если я прокомментирую каждую строку в методе поиска, она все же перенаправляется на «/ event/q? code = _thecodeyouputinthetextbox_» и дает мою страницу-заполнитель/показ. Что-то не так в моих маршрутах или форме, что приводит к тому, что он всегда переходит на эту страницу, игнорируя любые попытки перенаправления или проверки ошибок. –
выполните «rake routes» в корневом проекте и покажите результат. – kalelc
Я обновлю свой вопрос –