【发布时间】:2016-01-27 19:17:30
【问题描述】:
我还是 Rails 的新手,尝试解决一些我理解的问题有点高水平。我的应用程序需要接受用户输入的代码(事件的散列事件代码唯一),然后将它们重定向到该特定事件的显示页面(如果找到)。如果未找到,则显示错误 div。
与其在我测试它时抛出错误,就像它应该的那样,它只是将我指向一个通用的 /show 页面。我从大约十几个其他 Stack 帖子和教程中拼凑出这一点,但没有一个可以准确地展示我需要的那种功能。我需要的是,当这个表单提交时,它需要在控制器中运行一些试图 .find 特定对象的东西,如果成功运行重定向到它。在进行故障排除时,我拉出控制器中的重定向行,发现它甚至没有运行,其他东西将它指向 /show。如何让我的表格只问我的方法该怎么做?自定义路线是否正确?
现在,我的表单如下所示:
<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
Rake 路线: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
【问题讨论】:
标签: ruby-on-rails forms routing