2015-05-23 2 views
0

у меня есть возможность создавать пользователей по одному с их именами и адресами электронной почты в качестве параметров:Создание нескольких активных записей с переменными

<% 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» для создания адресов электронной почты, например, например. есть тестовое имя, он должен создать адрес электронной почты [email protected], чтобы каждый пользователь из большого количества имел имя и адрес электронной почты. В этой части нет вопросов, просто чтобы быть на одной странице.

Я прочитал несколько тем о том, как создавать несколько активных записей в рельсах, однако я не уверен, как передать переменные здесь и сделать опцию создания большого количества.

Если требуется дополнительная информация, пожалуйста, дайте мне знать.

Спасибо заранее!

+0

Параметры передаются из вашего представления в ваш контроллер в хеше 'params'. –

+0

@steveklein У меня есть 'def user_params params.require (: user) .permit (: name,: email) end' в моих users_controller для создания отдельных пользователей. Однако я не могу использовать это или подобное для нескольких записей или, по крайней мере, не могу понять, как это можно сделать. Если бы вы могли уточнить, что было бы здорово –

+0

OK Я отправил в качестве ответа, поскольку он немного задумывался о комментариях. Дайте мне знать, если у вас есть вопросы. –

ответ

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 

Вы можете перенести часть этого на модель, например, часть «@domain». Вы также можете создавать новые поля в своей форме для каждого пользователя, но это может привести вас к правильному пути.

+0

спасибо, я думаю, это должно помочь! Я попробую его и отправлю позже –

+0

вот что у меня теперь есть в контроллере: 'def create @user = User.new (user_params) if @ user.save flash [: info] =" Пользователь добавил!" redirect_to users_path еще визуализации 'новый' конец конец Защиту насыпной user_names_string = Params [: user_names_string] USER_NAMES = user_names_string.split ('') отображение (&: полоса). user_names.each сделать | user_name | User.create (имя: user_name, электронная почта: user_name + "@ domain.com") конец конца защиту user_params params.require (: пользователь) .permit (: имя, адрес: электронный адрес,: USER_NAMES ,: user_names_string) end end', но он не будет разделять строку с нуля, а также «Firs t в форме не может содержать nil или быть пустым » –

+0

Используйте https://gist.github.com/ для создания и ссылки кода, чтобы я мог читать его лучше ... Но вы должны поместить его внутри своего создания (и, возможно, обновления) действие, а не сделать его отдельным действием. – Fritzz

0

В принципе, вам нужно будет:

  1. Либо использовать существующий атрибут модели или создать новый (attr_accessor), чтобы связать с text_area поля в вашем представлении.
  2. Добавьте этот атрибут в свой разрешенный user_params.

Как только вы это сделаете, этот новый атрибут будет заполнен из вашего представления и доступен в вашем контроллере для обработки. Вам просто нужно будет входить в имена пользователей, форматировать по желанию и создавать новых пользователей в цикле.

Смежные вопросы