Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 以一种形式创建多个对象rails_Ruby On Rails_Forms_Ruby On Rails 5_Cocoon Gem - Fatal编程技术网

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 "&times;".html_safe, ?destroy_field?, class: 'badge badge-pill badge-danger mt-2' %>
    </div>
  </div>
</div>