Tag: json

查询Rails中的Postgres JSON数组字段

我试图在Postgres数据库中查询某个值。 我在users表中有一个名为groups的字段,可以用以下任一方式表示: 1。 groups: {“data”=>[{“serie”=>5, “year”=>3, “specialization”=>”Matematica”, “management_id”=>1, “group_number”=>2}, {“serie”=>5, “year”=>3, “specialization”=>”Matematica”, “management_id”=>1, “group_number”=>2}]} 2。 groups: [{“serie”=>5, “year”=>3, “specialization”=>”Matematica”, “management_id”=>1, “group_number”=>2}, {“serie”=>5, “year”=>3, “specialization”=>”Matematica”, “management_id”=>1, “group_number”=>2}] 我对这两种陈述都很好。 但是,我似乎无法找到如何让所有使用serie 5的用户说出来。 我尝试了多个查询: @users = User.where(“groups ->> ‘data’ @> ?”, {serie: 5}) @users = User.where(“groups -> ‘data’ @> ‘?'”, {serie: 5}) @users = User.where(“groups ->> ‘data’ ->> ‘serie’ […]

更新属性后ActiveRecord不保存

我想知道在这里是否有一些我不理解的东西,或者我是否遇到过ActiveRecord(4.1.1)中的错误。 我有一个数据库,里面只有一个属性,一个JSON字段。 我拿一个并尝试更新它。 test = Submission.find(1) test.update_attribute(‘json_data’,similar_but_different_json(test.json_data)) 我们假设方法similar_but_different_json对该JSON进行了一次小的更新。 在我的情况下,我正在修复由损坏的表单创建的一些数据错误。 执行此操作时,我没有收到任何错误,我在控制台中显示提交但未提交数据并返回true 。 为了实际更新记录,我必须这样做。 test = Submission.find(1) old_json_data = test.json_data test.json_data = “” test.json_data = similar_but_different_json(old_json_data) test.save 似乎正在发生的事情是ActiveRecord没有确定已经进行了必须保存的更改。 这可能是为什么将字段设置为空字符串然后返回JSON允许记录保存?

如何为活动模型序列化器关系选择所需的属性

我使用JSONAPI格式和Active Model Serializers来创建带有rails-api的api 。 我有一个序列化程序,它显示了一个具有许多topics的特定post ,目前,在关系下,列出了这些主题。 它目前只列出id和类型。 我也想展示这个主题的标题。 有些人会说在我的控制器中使用include: ‘topics’ ,但我不需要完整的主题记录,只需要它的标题。 问题 :如何指定要从主题中显示哪些属性? 是)我有的 “data”: { “id”: “26”, “type”: “posts”, “attributes”: { “title”: “Test Title 11” }, “relationships”: { “topics”: { “data”: [ { “id”: “1”, “type”: “topics” } ] } } } 我想要的是 “data”: { “id”: “26”, “type”: “posts”, “attributes”: { “title”: “Test Title […]

如何在rabl模板中的子元素中添加父属性(当父元素是数组时)?

如何在rabl模板中的子项中添加父属性? 要做这样的事情: some_root_attr: { attr_a: ‘rgtr’, parent: [ { attr_1: ‘asd’, child: { attr_3: 6, attr_from_parent_array_member: ‘cvb’ } }, { attr_1: ‘ert’, child: { attr_3: 9, attr_from_parent_array_member: ‘erty’ } }, … ] } 如何在父数组成员的子进程中获取父数组成员?

强参数和json输入轨道4

我试图通过JSON字符串保存数据,其中我有嵌套的关联属性。 我不想使用attr_accessible。 我几乎得到了强参数的逻辑,但仍然有问题使它们工作。 我正在获取JSON字符串并使用它来使用它来保存数据 data = request.body.read @inputData = Person.new(JSON.parse(data)) @inputData.save! if@inputData.valid? render :status => 200, :json => “Data inserted successfully” else render :status => 404, :json => “Not Inserted ” end 我已经定义了permit strong参数方法允许这样的嵌套属性 def referral_params params.require(:person).permit(:id, user_attributes: [:id, :first_name, :last_name, :email], device_attributes: [:id, :os_type, :os_version], location_attributes: [:id, :latitude, :longitude], duration_attributes[:id, :start_time, :end_time]) end 但我不知道如何使用此regerral_params方法以及JSON输入字符串….

指定传递给JSON对象的Rails对象的属性

我在Rails中有一个具有属性A,B,C,D和E的对象。当通过JSON对象将此对象传递回客户端时,如何告诉rails控制器仅包含属性A和D. JSON对象? 在我的Users控制器中,我的代码如下: @user = User.find(params[:id]) respond_to do |format| format.html format.json { render :json => @user} end 但是,此代码有效,返回的JSON对象包含@user对象的所有属性。 在将任何内容发送回客户端之前,如何限制JSON对象中包含的属性? 更新:lucapette提供了一些关于幕后发生的事情的好背景。 由于有时我可能希望返回所有属性,因此我最终使用以下代码: format.json { render :json => @user.to_json(:only => [“id”])}

推出Heroku,json和ruby 1.9.2时出错

我在推送Heroku时遇到问题,请按照以下错误进行操作 —–> Gemfile detected, running Bundler version 1.0.7 Unresolved dependencies detected; Installing… Using –without development:test Fetching source index for http://rubygems.org/ Installing rake (0.9.2) Installing abstract (1.0.0) Installing activesupport (3.0.9) Installing builder (2.1.2) Installing i18n (0.5.0) Installing activemodel (3.0.9) Installing erubis (2.6.6) Installing rack (1.2.3) Installing rack-mount (0.6.14) Installing rack-test (0.5.7) Installing tzinfo (0.3.29) Installing actionpack […]

使用Rails在视图中打印有效的,非转义的JSON

我已经尝试了一切。 每个组合的助手raw , html_safe to_json包括对::JSON.encode和CGI.unescape一些尝试。 问题在于,无论我做什么,我都无法在视图中打印格式良好的JSON。 它始终是HTML转义的。 这是我视图中的代码: var campaignData; 在我的情况下,它始终是被引用的引号“。我只是在引号上做一个gsub,但这对于IMO应该是一个非常简单,记录良好的用例来说是一个可怕的解决方案。

json erb模板找不到其他html偏

我正在尝试使用json响应,其中某些值是由部分呈现的html #projects_Controller.rb def index respond_to do |f| f.json end end # index.json.erb { “html”:” ‘projects/disclaimer’) %>” } 但是我收到以下错误: ActionView::Template::Error (Missing partial projects/disclaimer with {:handlers=>[:erb, :rjs, :builder, :rhtml, :rxml], :formats=> [:json], :locale=>[:en, :en]} in view paths “c:/rails/app/views”, “c:/rails/vendor/plugins/more/app/views”, “C:/Ruby192/lib/ruby/gems/1.9.1/gems/devise-1.1.8/app/views”) 似乎JSON请求在其名称中使用.json.erb呈现部分但不是.html.erb,这就是我所拥有的。 有没有办法让我指定’html’。 ADDED:如果请求是’js’,并且在index.js.erb中我渲染了几乎相同的代码:#index.js.erb disclaimer = { “html”:” ‘projects/disclaimer’) %>” } 它确实找到了projects / disclaimer.html.erb并正确呈现它。 我想知道为什么会出现这样的不一致,如果有人请求js,其模板中的任何部分渲染都会查找partial_name.html.erb但是如果请求json,则部分渲染会要求partial_name.json.erb? 谢谢

Rails JSON API使用JSON中的PARAMS测试POST请求

这是困扰我一段时间的问题。 我正在构建一个API函数,它应该在json中接收数据并在json中接收响应。 我的控制器测试运行正常(因为我抽象数据到达那里已经从JSON解码,只需要解释答案)。 我也知道该函数运行正常,因为我使用curl测试它与JSON参数,它完美地工作。 (例如:curl -i –header“Accept:application / json”–header“Content-Type:application / json”-d'{“test”:{“email”:“andreo@benjamin.dk”}} ‘) 但显然我想编写请求(function)测试来自动测试这个,我看到它应该像curl一样工作,即点击我的服务就像是外部调用。 这意味着我想在JSON中传递参数并得到答案。 我很遗憾,因为所有的例子我都能看到人们对待已经被解码的论点。 我的问题是:我正在遵循一个错误的前提,想要发送参数并请求作为JSON,因为我将测试rails的工作原理,因为这是它的责任吗? 但我想看看我的代码对错误的参数有多强大,并且想尝试使用JSON。 这种类型的东西: it “should return an error if there is no correct email” do params = {:subscription => {:email => “andre”}} post “/magazine_subscriptions”, { ‘HTTP_ACCEPT’ => “application/json”, ‘Content-Type’ => ‘application/json’, ‘RAW_POST_DATA’ => params.to_json } end 你知道这有可能吗? 如果您认为我测试错了,请告诉我。 祝一切顺利, 安德烈