Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.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 JSON列中的对象保存JSON数组?_Ruby On Rails_Arrays_Ruby_Json_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 如何使用Rails JSON列中的对象保存JSON数组?

Ruby on rails 如何使用Rails JSON列中的对象保存JSON数组?,ruby-on-rails,arrays,ruby,json,ruby-on-rails-4,Ruby On Rails,Arrays,Ruby,Json,Ruby On Rails 4,我有一个厨房模型,我想在其中添加名为“特殊厨房菜单”的菜单列表 我可以更新厨房。但是,当我console.log()database的结果时,我得到了这个结果: [{"name"=>"pizza", "price"=>29}, {"name"=>"burger", &q

我有一个厨房模型,我想在其中添加名为“特殊厨房菜单”的菜单列表

我可以更新厨房。但是,当我
console.log()
database的结果时,我得到了这个结果:

[{"name"=>"pizza", "price"=>29}, {"name"=>"burger", "price"=>24}, {"name"=>"cake", "price"=>39}]
执行console.log()的代码行

厨房型号

class Kitchen < ActiveRecord::Base
    # serialize :special_kitchen_menus

    # def convert_to_hash
    #   self.special_kitchen_menus = self.special_kitchen_menus.to_h
    # end
end
表格

<%= form_for @kitchen do |f| %>
    <!-- other fields -->

    <label>Special Kitchen Menus</label>
    <%= f.text_field :special_kitchen_menus %>              
    <%= f.submit "Update" %>
<% end %>
我应该怎么做才能正确地更新输入数据,这样我就可以正确地检索到输入数据,而不需要那些奇怪的字符

注意1:我不想将数据存储在其他模型中或使用嵌套属性。我只想使用相同的厨房表单将数据存储在这个厨房模型中


注2:我正在使用postgres数据库。不适用于此应用程序的sqlite。

我认为您无法在JSON类型列中保存JSON数组。在JSON类型列中,只能存储有效的JSON对象。同样,JSON数组不是JSON对象,所以您不应该将其存储在Rails的JSON列中。博士后有一个良好的学习环境。您应该使用它来存储JSON对象数组

更新 可以使用列类型在数据库中存储JSON对象数组。看看@brg在评论部分指出的这一点。

试试这个:

var a = <%= @kitchen.special_kitchen_menus.to_json.html_safe %>;
console.log(a);
var a=;
控制台日志(a);

你能告诉我们控制台.log语句中的代码行吗?请更新我的问题。谢谢你的帮助!您能建议我现在应该做什么吗?您是在postgres还是mysql上?postgres有您可以使用的数组列类型:您可以将JSON数组保存在jsonb类型列中。看:很难找到答案!谢谢
# before_action :convert_to_hash, only: [:update]

def update
    @kitchen = Kitchen.find(params[:id])
    if @kitchen.update(kitchen_params)
      redirect_to @kitchen
    else
      render :edit
    end
end

def kitchen_params
    params.require(:kitchen).permit(:special_kitchen_menus)
end
<%= form_for @kitchen do |f| %>
    <!-- other fields -->

    <label>Special Kitchen Menus</label>
    <%= f.text_field :special_kitchen_menus %>              
    <%= f.submit "Update" %>
<% end %>
[
  { "name": "pizza", "price": 29 }, 
  { "name": "burger", "price": 24 }, 
  { "name": "cake", "price": 39 }
]
var a = <%= @kitchen.special_kitchen_menus.to_json.html_safe %>;
console.log(a);