【问题标题】:Saving a hash to the DB that contains arrays of the forms submitted data将哈希保存到包含表单提交数据数组的数据库
【发布时间】:2016-02-28 10:27:21
【问题描述】:

我有一个将值保存到散列中的表单。并且从控制器将哈希保存到数据库中。

这是表格

   <%= form_for([@category, @page], url: update_pages_path) do |f| %>
   <%= render 'shared/error_messages', object: f.object %>

     <%= text_field_tag 'content[key1]' %>

     <%= text_field_tag 'content[key2]' %>

     <%= text_field_tag 'content[key3]' %>

     <%= text_field_tag 'content[key4]' %>
     <%= f.submit "Save"  %>

   <% end %>

这里是哈希保存到数据库的地方

  if @page.update (category_params)
   @page.update(table_content: params[:content])
   redirect_to show_pages_path(@category, @page)
   flash[:success] = "Updated."
   else
   render 'edit'
  end

我需要更改表单,以便散列中的值将是一个数组。并且用户可以从表单中将项目添加到值数组中。

这是当前保存到数据库的信息

{"key1"=>"value1", "key2"=>"value2", "key3"=>"value3", "key4"=>"value4"}

我需要它来改变这个

{"key1"=>["value1"], "key2"=>["value2"], "key3"=>["value3"], "key4"=>["value4"]}

所以最终这样的东西可以从表单和控制器保存到数据库中

{"key1"=>["value1a","value1b"], "key2"=>["value2"], "key3"=>["value3a", "value3b"], "key4"=>["value4"]}

我将使用 js,以便用户可以添加和删除输入,但在开始之前我首先需要知道表单设置是什么样的。

现在为了简单起见,表单和控制器可能需要什么样的外观才能将底部哈希保存到数据库。

'content[1]' 的哪一部分需要更改,以便我可以将另一个输入添加到键 key1 值数组中。

我找不到如何将输入保存为数组,更不用说如何将 2 个输入作为数组的一部分保存到同一个键中。

基本上需要做些什么才能将列出的第三个数组保存到数据库中,以免更改我拥有的表单和控制器。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 form-for


    【解决方案1】:

    尝试在表单中取一个包含你名字的数组,

    content[key1][]
    

       <%= form_for([@category, @page], url: update_pages_path) do |f| %>
       <%= render 'shared/error_messages', object: f.object %>
    
         <%= text_field_tag 'content[key1][]' %>
    
         <%= text_field_tag 'content[key2][]' %>
    
         <%= text_field_tag 'content[key3][]' %>
    
         <%= text_field_tag 'content[key4][]' %>
         <%= f.submit "Save"  %>
    
       <% end %>

    【讨论】:

    • 用户如何将多个值添加到一个数组中? (最好来自第二个输入字段)&lt;%= text_field_tag 'content[key1][]' %&gt; 我想会使哈希值成为一个数组,该数组内有一个值。如果我再次将&lt;%= text_field_tag 'content[key1][]' %&gt; 添加到表单中,我想它只会覆盖第一个输入值,而不是添加到分配给key1 的数组中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-21
    • 2021-12-14
    • 1970-01-01
    相关资源
    最近更新 更多