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);