我是rails的新手,我正在努力设计一个表单。我有“用户”的型号和控制器。我创建了一个一次接受一个用户的表单。我想要创建的是一个从同一页面接受多个用户的表单。
def new
@user = User.new
end
def create
@user = User.new(user_params)
if @user.save
redirect_to @user
else
render 'new'
end
end
新表格
<%= form_for(@user) do |f| %>
<%= render 'fields', f: f %>
<%= f.submit "Create my account", class: "btn btn-large btn-primary" %>
<% end %>
_fields.html.erb
<fieldset>
<%= f.label :name %>
<%= f.text_field :name %>
<%= f.label :email %>
<%= f.text_field :email %>
<%= f.label :password %>
<%= f.password_field :password %>
<%= f.label :password_confirmation, "Confirmation" %>
<%= f.password_field :password_confirmation %>
</fieldset>
注意:我知道如何创建Nested form。如果您看到该链接,教程将演示如何为调查创建多个问题。我想要的是以相同的形式创建多个调查。
答案 0 :(得分:1)
尝试做类似的事情:
<%= form_tag(some_url_path, method: :put) do %>
<% for user in @users %>
<%= fields_for "users[]", user do |f| %>
<%= render 'fields', f: f, user: user %>
<% end %>
<% end %>
<%= submit_tag "Submit" %>
<% end %>
并且在控制器中,您应该在@users
方法中创建@user
而不是一个new
,并在create
方法中接受多个用户而不是一个。
更新:
当您想要更新控制器中的用户时,您可以这样做(我没有对其进行测试):
User.update(params[:users].keys, params[:users].values)
并创建:
User.create(params[:users].values)
params[:users].keys
应该是用户ID的哈希值,而params[:users].values
应该是相应用户的哈希属性
我不知道您打算如何管理动态数量的用户,但这可能有所帮助。