我想这样做是实现这一目标的最佳方式 关注Rails。
我有一个“预订表格”,有5个字段(属性,儿童数量, 成人数量和2个日期 - 出发和到达)基于这些 字段,我需要构建一个URL并将用户重定向到此URL。 现在,我有两个问题。
1)我如何捕获控制器中的POST参数,因为我 将表单映射到这样的操作:
<% form_tag(:action => "booking") do %>
并将其路由到这样的控制器操作:( Pages Controller, 预订行动)
match 'pages/booking' => 'pages#booking'
2)这是Rails实际完成这种事情的方式吗? 我过去在PHP中这样做过,但现在我有需要 实际上是在Rails中做到这一点,你可以让Rails Gurus激励我吗?
答案 0 :(得分:3)
要访问控制器中的参数,即使是在POST正文中提交的参数,也要使用params
哈希。例如:params[:form_field]
要使用控制器重定向到其他网址,请使用redirect_to
。您当然可以使用params
中的值来构建网址并将其传递给redirect_to
。
答案 1 :(得分:0)
如果您正在使用资源丰富的路线,这是处理此类事情的最佳方式,那么您可以通过传统方法进行处理:
resources :bookings
然后你将表单发布到bookings_path
,这样就可以了,就像BookingsController#create
一样。在可能的情况下,最好在模型和控制器之间建立强相关性。
resources
中的routes.rb
定义可以帮助您创建可以构建的所有默认RESTful操作。如果您确实需要自定义路线,则始终可以使用:as
选项对其进行重命名,或者单独布线。
如果您要创建自己的任意路线,例如/pages/booking
,您将会造成其他人必须维护的混乱。很多时候,其他人就是你。