Rails:为什么在调用`render'new'`时自定义url会改变?

age*_*217 11 controller ruby-on-rails url-routing ruby-on-rails-3

我有一个控制器,用于控制联系页面上的联系我们表单.在routes.rb文件中我有一行说match '/contact', :to => 'feedback#new'.现在当表格填写正确时,一切正常; 网址是'/ contact'.但是,当表单未正确填写时,我的控制器renders 'new'和URL将更'/contact'改为'/feedback'.有人能告诉我为什么会发生这种情况以及我如何解决这个问题,以便如果验证被触发并且页面被渲染,那么网址是否/contact仍然存在/feedback?谢谢!

我的控制器代码: 在此输入图像描述

now*_*owk 9

match '/contact', :to => 'feedback#new'
Run Code Online (Sandbox Code Playgroud)

这条路线将只匹配/contactFeedbackController#new.

您需要添加以匹配"post"部分 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
Run Code Online (Sandbox Code Playgroud)

您的表单现在将更改为

= form_for(@feedback), :url => post_contact_path do |f|
Run Code Online (Sandbox Code Playgroud)

只是使用默认值form_for将尝试从resources您的中创建路径routes.rb.并且,我假设该路线resources :feedback当然会创建看起来像的路线/feedback.