Rails 设计两个单独的注册表

Rails devise two separate registration forms

我正在建立一个有病人和医生的医生预约平台。

我目前有一个标准设计设置,其中包含一个用户模型和一个注册表单,我想为患者分开一个表单,我将在其中传递患者的参数角色和一个带有医生角色参数的医生表单,这样我就可以从控制器或模型分配角色。

只有医生的表格才会完全相同我需要一些额外的字段。

此外,我的医生属于某个用户,因此可以与其他医生进行预约,使用布尔值来定义它是否是医生或使用枚举角色是否是一个好习惯。

我需要帮助

hidden_field_tag呢,你有没有尝试过什么或者想弄清楚概念?您可以使用 hidden_field_tag 来执行此操作,就像您使用 bootstrap 选项卡创建这些表单一样

$('#myTabs a').click(function (e) {
  e.preventDefault()
  $(this).tab('show')
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<!-- Latest compiled and minified JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
<div>

  <!-- Nav tabs -->
  <ul class="nav nav-tabs" role="tablist">
    <li role="presentation" class="active"><a href="#home" aria-controls="home" role="tab" data-toggle="tab">Doctor</a></li>
    <li role="presentation"><a href="#profile" aria-controls="profile" role="tab" data-toggle="tab">Patient</a></li>
  </ul>
<h2>Just example form</h2>
  <!-- Tab panes -->
  <div class="tab-content">
    <div role="tabpanel" class="tab-pane active" id="home">
    <h2>Doctor?</h2>
    <form>
  <div class="form-group">
    <label for="exampleInputEmail1">Email address</label>
    <input type="email" class="form-control" id="exampleInputEmail1" placeholder="Email">
  </div>
  <div class="form-group">
    <label for="exampleInputPassword1">Password</label>
    <input type="password" class="form-control" id="exampleInputPassword1" placeholder="Password">
  </div>
  <div class="checkbox">
    <label>
      <input type="checkbox"> Check me out
    </label>
  </div>
  <button type="submit" class="btn btn-default">Submit</button>
</form>
    </div>
    <div role="tabpanel" class="tab-pane" id="profile">
    <h2>Patient?</h2>
        <form>
  <div class="form-group">
    <label for="exampleInputEmail1">Email address</label>
    <input type="email" class="form-control" id="exampleInputEmail1" placeholder="Email">
  </div>
  <div class="form-group">
    <label for="exampleInputPassword1">Password</label>
    <input type="password" class="form-control" id="exampleInputPassword1" placeholder="Password">
  </div>
  <div class="checkbox">
    <label>
      <input type="checkbox"> Check me out
    </label>
  </div>
  <button type="submit" class="btn btn-default">Submit</button>
</form>
    </div>
  </div>

</div>

在表单中,您可以只使用隐藏字段,例如 when form for doctor

<%= f.hidden_field :role, value: "doctor" %>

以及患者

的表格
<%= f.hidden_field :role, value: "patient" %>

并允许他们 roleapplication_controller

before_action :configure_permitted_parameters, if: :devise_controller?
protected
def configure_permitted_parameters
    devise_parameter_sanitizer.permit(:sign_up, keys: [:email, :role])
end

我想这会有帮助。