我可以选择逐个创建用户名称和电子邮件地址作为参数:
<% provide(:title, 'Add User') %>
<h1>Add User</h1>
<div class="row">
<div class="col-md-4 col-md-offset-4">
<%= form_for(@user) do |f| %>
<%= render 'shared/user_error_messages' %>
<%= f.label :name %>
<%= f.text_field :name, class: 'form-control' %>
<%= f.label :email %>
<%= f.text_field :email, class: 'form-control'%>
<%= f.submit "Add User", class: "btn btn-primary" %>
<% end %>
</div>
</div>
我希望能够选择一次创建多个用户。它应该是一个文本区域,您可以在其中输入要添加的用户的名称。然后,它应解析名称并添加“@ domain.com”以创建电子邮件地址,例如,有一个测试名称,它应该创建一个test.name@domain.com电子邮件地址,以便批量的每个用户都有一个名称和电子邮件地址。这一部分毫无疑问,只是在同一页上。
我已经阅读了一些关于如何在rails中创建多个活动记录的线程,但是,我不知道如何在这里传递变量并使批量创建选项有效。
如果需要任何其他详细信息,请告诉我们。
提前谢谢!
答案 0 :(得分:0)
基本上,你需要:
attr_accessor
)以与视图中的text_area
字段相关联。user_params
。执行此操作后,将从您的视图中填充此新属性,并在控制器中进行处理。您只需要打入用户名,根据需要进行格式化并在循环中创建新用户。
答案 1 :(得分:0)
您可以在控制器中执行此操作。先做steve klein所说的话,然后你就可以做到以下几点。 例如,如果您想使用文本字段输入新的用户名,您可以在表单中执行以下操作:
<%= f.label :user_names %>
<%= f.text_field :user_names_string, class: 'form-control' %>
然后在控制器中访问:user_names_string,如下所示:
user_names_string = params[:user_names_string]
user_names = user_names_string.split(',').map(&:strip)
user_names.each do |user_name|
User.create(name: user_name, email: user_name + "@domain.com")
end
您可以将其中一部分移至模型中,例如&#34; @ domain&#34;部分。 您还可以在每个用户的表单中创建新字段,但这可能会让您走上正确的轨道。