Ruby on rails 以一种形式创建多个对象rails
我试图实现的是一个看起来像嵌套表单的网页(因此能够添加新元素并删除已经存在的元素)。这里的问题是它不是一个嵌套表单,而是我只有一个模型Ruby on rails 以一种形式创建多个对象rails,ruby-on-rails,forms,ruby-on-rails-5,cocoon-gem,Ruby On Rails,Forms,Ruby On Rails 5,Cocoon Gem,我试图实现的是一个看起来像嵌套表单的网页(因此能够添加新元素并删除已经存在的元素)。这里的问题是它不是一个嵌套表单,而是我只有一个模型 class MyModel < ApplicationRecord end 这是渲染页面 def config_update @config_items = MyModel.all errors = save_configs respond_to do |format| if errors.empty? flash[:su
class MyModel < ApplicationRecord
end
这是渲染页面
def config_update
@config_items = MyModel.all
errors = save_configs
respond_to do |format|
if errors.empty?
flash[:success] = "message"
format.html { redirect_to root_path}
format.json { render json: @config_items, status: :ok }
else
flash.now[:danger] = "message"
format.html { render :configure }
format.json { render json: ?what?, status: :unprocessable_entity }
end
end
end
这是更新操作
def save_configs
@config_items = []
errors = []
params[:config_items].each do |id, name|
item = MyModel.find_or_create_by(id: id)
errors << item.errors unless item.update_attributes(name: name[:name])
@config_items << item
end
errors
end
def config_params
params.require(:config_items).permit(:id,
:name
)
end
def save\u配置
@配置_项=[]
错误=[]
参数[:config_items]。每个do | id、名称|
item=MyModel.find_或create_by(id:id)
错误如果要删除,只需传递“\u destroy”隐藏的布尔值,如果create-“id”应为nil。当然,这不是自动的-代码应该被编写为什么你的模型名为myModel
而不是myModel
?是的@NeverBe,但问题是如何,因为这就是我正在努力解决的问题。。。否则我就不会发布这个问题了。。。
def save_configs
@config_items = []
errors = []
params[:config_items].each do |id, name|
item = MyModel.find_or_create_by(id: id)
errors << item.errors unless item.update_attributes(name: name[:name])
@config_items << item
end
errors
end
def config_params
params.require(:config_items).permit(:id,
:name
)
end
<%= form_with url: update_configs_members_path do |form| %>
<%= hidden_field_tag 'type', params[:type] %>
<div id="items" class="col-md-12 p-0 pl-md-3">
<% @config_items.each do |config| %>
<%= form.fields_for "config_items[]", config do |configForm| %>
<%= render 'config_fields', f: configForm %>
<% end %>
<% end %>
</div>
<%= submit_tag 'Update Configurations', class: 'btn btn-warning btn-block my-2' %>
<% end %>
<div class="nested-fields">
<div class="field form-group row">
<%= f.label :name, 'Name:', class: 'col-sm-1 col-form-label' %>
<div class="col-sm-10">
<%= f.text_field :name, class: 'form-control ml-2' %>
</div>
<div class="col-sm-1 p-0">
<%= link_to "×".html_safe, ?destroy_field?, class: 'badge badge-pill badge-danger mt-2' %>
</div>
</div>
</div>