ruby-on-rails – Rails:为什么调用`render’new’时,自定义url会改变?

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – Rails:为什么调用`render’new’时,自定义url会改变?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个控制器来控制联系人页面上的联系人表单.在routes.rb文件里面我有一行表示匹配’/ contact’,:to => “反馈#新”.现在当表单正确填写时,一切正常;该网址是’/ contact’.但是,当表单未正确填写时,我的控制器会显示“新”,并且URL从“/ contact”更改为“/ Feedback”.有人可以告诉我为什么会发生这种情况,以及我如何修复它,以便如果验证被触发并且页面被呈现,那么url将是/联系静止而不是/反馈?谢谢!

我的控制器代码

解决方法

match '/contact',:to => 'Feedback#new'

该路由只会匹配/联系FeedbackController#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

您的表单现在将更改为

= form_for(@Feedback),:url => post_contact_path do |f|

只要使用默认的form_for,将尝试从routes.rb中的资源创建路径.而且,我假设路由是资源:反馈,当然会创建看起来像/反馈的路由.

猜你在找的Ruby相关文章