Tag: json

使用AJAX从Ruby on Rails服务器获取JSON内容

我有一些RoR的经验,不过,我是AJAX事务的新手。 我的目标是在不同的机器上运行HTML5 + JavaScript客户端和Ruby on Rails服务器(最终)。 我想要的是JavaScript客户端以JSON格式从服务器获取内容,然后进行解析。 我已经尝试了很多东西,比如添加一个“responseType”等,但是没有它们起作用。 我当前的JavaScript文件是这样的: $(document).ready(function() { var xmlhttp = new XMLHttpRequest(); xmlhttp.open(“GET”, “http://localhost:3000/contents”, true); xmlhttp.send(); alert(xmlhttp.responseText); }); 我的RoR应用程序有一个路径“/ contents”,它调用contents_controller.rb的索引函数,如下所示: def index @contents = Content.all.order(‘created_at DESC’) respond_to do |format| format.html # index.html.erb format.json { render json: @contents } end end AJAX甚至是正确的方法吗? 我有点迷茫。 非常感谢!

为什么我的Rails API不能保存数据库中的任何内容?

我正在构建一个带有Rails 4.1的应用程序,它有一个用户控制器和一个单独的API控制器,用于在/v1/users获取和发布基本用户数据(将在生产中的专用子域中提供)。 我的API :: V1:UsersControllerinheritance自ActionController :: Base,并具有以下create方法: # POST /v1/users def create @user = User.create(params[:user]) if @user.save render :json => @user else render :json => { :errors => @user.errors.full_messages }, :status => 422 end end 在我的主UsersController中,create方法如下所示: def create @user = User.new(user_params) @user.save redirect_to @user end private def user_params params.require(:user).permit(:first_name, :last_name, :email, :birthdate) end …而routes.rb将所有内容联系起来: namespace […]

通过JSON / XML将二进制数据发送到(Rails)RESTful端点?

我目前正在组建一个基于rails的Web应用程序,它只能通过json和xml提供和接收数据。 但是,某些要求包含上载二进制数据(图像)的function。 现在我的理解JSON并不完全是为了那个……但是你如何解决在你的应用程序的两个入口点上接收二进制文件/数据的问题?

在RSTP中接收PUT的错误,但不是POST

在我的规格中,当我在下面运行POST请求时,一切正常。 before do request_payload = { player: { first_name: “Joe”, last_name: “Carradine”, team_id: “1” } } post :create, request_payload end 但是当我为PUT运行规范时: before do request_payload = { player: { first_name: “Buck”, last_name: “Carradine”, team_id: “1” } } put :update, id: 3, request_payload end 我收到这样的错误: [filename]_spec.rb:139: syntax error, unexpected ‘\n’, expecting tASSOC (SyntaxError) [filename]_spec.rb:198: syntax error, unexpected […]

使用Rails创建嵌套的JSON请求

我有点复杂的情况。 我正在构建一个带有rails后端的iPhone应用程序。 有两个模型对象,一个聊天会话和一个人。 它们的定义如下: class Person < ActiveRecord::Base belongs_to :chatsession end class Chatsession “Person” end 领导者本质上是特定聊天会话的主要人物。 现在,从我的iPhone应用程序中,我希望能够在一次调用中与领导者创建一个Chatsession(通常网络调用在iPhone上很昂贵,所以我想避免创建一个Person对象,然后创建一个会话对象)。 可能的JSON请求可能如下所示: {“chatsession”: {“leader”: {“name”:”mary”,”device_id”:”1111″}}} 在我创建方法的chatsession控制器上,我希望能够吸入这个JSON并让它创建一个新的聊天会话对象和相关的人物对象。 执行此操作的相关代码将是: class ChatsessionController < ApplicationController def create @chatsession = Chatsession.new(params[:chatsession]) end 在我的function测试中,它使用以下代码: test “should create session” do # people(:one) is retrieving from a fixture post :create, :chatsession => { :leader => people(:one) } […]

Rails:JSON中的validation错误代码

所以,我正在编写Rails web应用程序,该应用程序具有用于移动应用程序的JSON API。 例如,它将POST JSON请求发送到example.com/api/orders以创建订单。 {id: 1, order: { product_name: “Pizza”, price: 10000}} 如果出现validation错误,我可以使用HTTP 422错误代码和json中的order.errors.full_messages进行响应。 但我觉得在JSON响应中有特定的错误代码似乎更好。 不幸的是,似乎Rails没有提供为validation错误设置错误代码的能力。 如何解决这个问题呢?

如何转换此respond_to选项以使用Rails 3版本?

respond_to do |format| if @user.save format.js { render :nothing => true, :status => :ok, :location => @user } else format.js { render :json => @user.errors, :status => :unprocessable_entity } end end 我尝试过的所有选项(比如将respond_to :js放在控制器的顶部等)并没有像在这里那样工作。

我如何使用JavaScript来解析Ruby JSON字符串

我正在尝试从Rails应用程序的JSON输出字符串中获取JSON对象。 目前在JavaScript我正在做: data = “”; 但是,由于JSON对象的开头和结尾都有引号,因此它不会呈现为JSON对象。 相反,它正在做类似的事情 data = “[{“name”:”YHet”,”organism_id”:”4ea9b90e859723d3f7000037″}]” 有没有办法可以删除开头和结尾的引号,以便将对象视为数组而不是字符串?

存储嵌套JSON的访问器

我有“组织”模型,它存储与组织相关的所有信息。 有一个名为“集成”的JSONB类型的字段,用于存储与组织具有的所有外部服务集成有关的信息。 如何使用商店访问者访问存储在嵌套JSON中的信息,例如: { “mailchimp”: {“api_key”:”vsvsvef”, “list_id”:”12345″}, “sendgrid” : {“username”:”msdvsv”, “password”:”123456″} } 我知道我可以使用这样的商店访问器访问mailchimp: store_accessor :integrations, :mailchimp 如何轻松访问mailchimp的api_key?

防止rails 3上的ruby解析JSONpost

我在Ruby on Rails 3中有一个控制器方法,它接受application / JSON作为内容类型。 这一切都按预期工作,但我实际上不希望rails自动解析POST请求正文中的JSON。 此方法充当网关,只是将信息传递到队列中,并且可能非常大。 我不想浪费时间将数据处理到@_params,因为它是不必要的。 我相信我可以通过将请求标头中的内容类型设置为其他内容来解决这个问题,但我希望对于HTTP请求在语义上是正确的。 如何禁用此function? 编辑:更具体地说,如何才能为这一条路线编辑此function?