我有一个控制器,用于控制联系页面上的联系我们表单。在routes.rb
文件中,我有一行match '/contact', :to => 'feedback#new'
。现在当表格填写正确时,一切正常;网址是'/ contact'。但是,如果表单填写不正确,我的控制器renders 'new'
和网址会从'/contact'
更改为'/feedback'
。有人可以告诉我为什么会发生这种情况以及如何解决这个问题,以便在触发验证并呈现页面时,网址仍为/contact
而不是/feedback
?谢谢!
我的控制器代码:
答案 0 :(得分:9)
match '/contact', :to => 'feedback#new'
该路线只会将/contact
与FeedbackController#new
匹配。
您需要添加以将“发布”部分与FeedbackController#create
match '/contact', :to => 'feedback#create', :via => :post, :as => :post_contact
# change :as => to whatever path for this you'd like to use, ex :as => :create_contact
您的表单现在将更改为
= form_for(@feedback), :url => post_contact_path do |f|
只需使用默认form_for
即可尝试从resources
中的routes.rb
创建路径。并且,我假设该路由是resources :feedback
,这当然会创建看起来像/feedback
的路线。
答案 1 :(得分:2)
而不是使用/contact
匹配器:
resources :contact, :as => :feedback, :controller => :feedback, :only => [:new, :create]
http://guides.rubyonrails.org/routing.html#customizing-resourceful-routes