Ruby on rails 两种不同的报名表

Ruby on rails 两种不同的报名表,ruby-on-rails,devise,Ruby On Rails,Devise,我正在用Desive做一个应用程序,普通的Joe市民可以在这里提问,希望能得到某种医学专业人士的回答。在我的主页上,我想有两个这样的注册链接 <li><%= link_to "Sign up", new_user_registration_path %></li> <li><%= link_to "Are you a Medical Professional?", new_user_registration_path %></li

我正在用Desive做一个应用程序,普通的Joe市民可以在这里提问,希望能得到某种医学专业人士的回答。在我的主页上,我想有两个这样的注册链接

<li><%= link_to "Sign up", new_user_registration_path %></li>
<li><%= link_to "Are you a Medical Professional?", new_user_registration_path %></li>
  • 但我想让它们显示不同的注册表格,这就需要我假设的不同路线

    用户模型上唯一的区别是,对于医学专业人员,医学专业人员的布尔属性将为“true”,而对于普通人则为false


    有一种简单的方法可以做到这一点吗?

    方法1:将选择持久化到隐藏字段中

    <li><%= link_to "Sign up", new_user_registration_path %></li>
    <li><%= link_to "Are you a Medical Professional?", new_user_registration_path(medical: true) %></li>
    
    我不确定复选框标记是否会像那样工作,如果您发现语法不同,请随意编辑。希望能有帮助

    方法2:覆盖设备注册控制器

    这是完全可能的,只需查看文档即可。然而,当我这样做的时候,我会感到有点厌倦,因为Desive控制器的内部可能会发生变化,而您需要手动保持这些变化的同步

    方法3:按要求:显示不同的注册表格

    使用该参数,您可以在视图中决定要渲染的窗体(不美观、不时尚,但可以工作:-D)

    
    

    这两种表单都需要携带所有相关的注册属性。这当然是一些代码重复,但在我看来,不必重写可能需要在您未注意的情况下更改的设备控制器操作是值得的。

    非常感谢。这看起来是可行的,但是,我希望根据他们点击的链接显示不同的注册页面。是否有方法在控制器级别检查参数并呈现不同的页面(具有不同的表单)?如果您修改了答案,请不要删除您已经提供的信息,因为它非常有用。谢谢。我已经发布了另一种不同形式的方法。希望能有帮助。谢谢,我感谢你的帮助。只是想让你知道,这不起作用:相反,我不得不这么做,因为如果没有医疗参数,那么就没有真正的方法。然而,总的来说,解决方案很棒。谢谢你的帮助。谢谢你的回复,我已经更新了答案,包括你的反馈。很乐意帮忙!
    # Remember the medical user setting
    <%= f.check_box :medical, checked: params[:medical].true?, hidden: true %>
    
    <% if params[:medical] %>
       <%= render 'medical_signup_form' %>
    <% else %>
       <%= render 'regular_signup_form' %>
    <% end %>