ruby-on-rails – 在ActiveResource查询中禁用嵌入对象中的json
发布时间:2020-12-16 19:15:27 所属栏目:百科 来源:网络整理
导读:我在嵌入式json对象中遇到了不必要的根元素问题. 这是清理过的来源: 用户模型: class User ActiveResource::Base self.format = :json self.element_name = "user" #...end 控制器的动作’新’ def new @user = User.build @user.id = nilend User.build给
我在嵌入式json对象中遇到了不必要的根元素问题.
这是清理过的来源: 用户模型: class User < ActiveResource::Base self.format = :json self.element_name = "user" #... end 控制器的动作’新’ def new @user = User.build @user.id = nil end User.build给了我下一个json: { "id":0,"user_name":null,"credit_card": {"number":null} } 控制者的行动’创造’ def create @user = User.new(params[:user]) @user.save end 查看’_form.html.erb’ <%= form_for(@user) do |f| %> <%= f.label :user_name %> <%= f.text_field :user_name %> <%= f.fields_for @user.credit_card do |cc_f| %> <%= cc_f.label :number %> <%= cc_f.text_field :number %> <% end %> <% end %> 当我保存用户app时发送下一个json: { "user"=> {"credit_card"=> {"credit_card"=> {"number"=>"xxxxyyyyzzzzaaaa"} },"user_name"=>"test" },"api_client_key"=>"top_secret" } 问题在于重复credit_card密钥.我怎么解决呢? 最终解决方案 class User < ActiveResource::Base self.include_root_in_json = false self.format = :json self.element_name = "user" def to_json(options = {}) { self.class.element_name => self.attributes }.to_json(options) end # ... end 感谢Oliver Barnes 解决方法
尝试
ActiveResource::Base.include_root_in_json = false 如果您需要保留顶部根并只删除关联的信用卡对象的根,那么您可能需要使用#to_json自定义json输出,如下所示: def to_json(options = {}) { "user"=> {"credit_card"=> {"number"=> self.credit_card.number } },"user_name"=> self.user_name }.to_json(options) end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |