Rails:自动填充表单字段

时间:2015-11-21 15:50:50

标签: ruby-on-rails devise

目前我正在使用两个模型,teachersusers

我允许小组教师注册(使用设计)他们自己的用户,他们将通过teacher_id与这些老师相关联。例如,教师ID为1的小组成员都将成为领导者1队列的一部分。

更新:我原来的问题是如何添加隐藏字段。我已经添加了一个隐藏的字段,但由于一些奇怪的原因,数据被保存到Db。新用户有一个空白的教师ID。任何帮助将不胜感激。

注册控制器

    class RegistrationsController < Devise::RegistrationsController

  private

  def sign_up_params
    params.require(:user).permit(:teacher, :teacher_id, :user_id, :username, :first_name, :last_name, :email, :password, :password_confirmation)
  end

  def account_update_params
    params.require(:user).permit(:teacher, :teacher_id, :user_id, :username, :first_name, :last_name, :email, :password, :password_confirmation, :current_password)
  end
end
    enter code here

New.html.erb

<%= simple_form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
  <%= f.error_notification %>

  <div class="form-inputs">
<div>
<% if teacher_signed_in? %>
<p>
  Sign up new student. Enter in the name, email and password that your student will use to sign in.

<%= hidden_field_tag :teacher_id, current_teacher.id %>
<% else %>
<% end %>

  <%= f.input :username, required: true, autofocus: true %>
    <%= f.input :email, required: true %>




    <%= f.input :password, required: true, hint: ("#{@minimum_password_length} characters minimum" if @minimum_password_length) %>
    <%= f.input :password_confirmation, required: false %>
  </div>

  <div class="form-actions">
    <%= f.button :submit, "Sign up" %>
  </div>
<% end %>

<%= render "devise/shared/links" %>

    enter code here

2 个答案:

答案 0 :(得分:2)

您可以设置一个隐藏字段,其值为current_leaders的id。它将与表格的其余部分一起发布。

<%= hidden_field_tag :leader_id, current_leader.id %>

答案 1 :(得分:2)

如果你真的想把id放在@ bryan-dimas&#39;回答有效。

虽然我建议在创建记录之前将其设置在控制器中,而不是将其放在控制器中,这样就可以确保用户与创建记录的params.require(:user).permit(<some fields>).merge(leader_id: current_user.id) 相关联。 如果您在表单中使用它,那么具有足够知识的用户可以在提交表单之前看到隐藏字段并更改值。

这将是:

.json