SimpleForm将表单发布到不同的控制器和动作

时间:2018-11-23 11:28:26

标签: ruby-on-rails simple-form

我有一个活动显示页面,其中显示一个@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。

1 个答案:

答案 0 :(得分:1)

如果我正确理解了这种情况: 您不能有两个具有相同HTTP方法和路径的路由。 method + path组合必须是唯一的。 您应该将自定义注册路由到custom_registrations/:slug之类的地方,或更改events#create

的路径

当然,您可以对不同的动作使用不同的方法。例如PUT。但是我认为这是一种不好的做法,因为它非常隐含,对于使用此代码的任何人都将很难理解。