我有一个活动显示页面,其中显示一个@customer
的客户表单。如果该事件是另一种事件,那么我将显示@registration的表单,并将该表单发布到RegistrationsController#create。
现在在我的路线上,我有这个:
post '/:slug' => 'events#create', as: :registration
<%= simple_form_for @registration, url: custom_registration_path, html: { class: 'form, styled-form', autocomplete: 'off' } do |f| %>
...
<% end %>
上面的表格仍发布到EventsController#create
我在EventsController#show
中定义@registration,并将表单发布到custom_registration_path。
如何定义路线?我仍然想将:slug
发送到RegistrationsController。
答案 0 :(得分:1)
如果我正确理解了这种情况:
您不能有两个具有相同HTTP方法和路径的路由。 method + path
组合必须是唯一的。
您应该将自定义注册路由到custom_registrations/:slug
之类的地方,或更改events#create
当然,您可以对不同的动作使用不同的方法。例如PUT
。但是我认为这是一种不好的做法,因为它非常隐含,对于使用此代码的任何人都将很难理解。