问题标签 [rails-api]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
7322 浏览

ruby-on-rails - 如何禁用特定控制器的 ActiveModel::Serializers?

我们在 Rails 应用程序中使用active_model_serializers - 0.8.1 。

该应用程序具有一些从 ActionController::Metal 继承的 API 特定控制器,其方式类似于rails-apiActionController::API

好吧,我们只想将 ActiveModel::Serializers 用于上面提到的 API 控制器。
这可能吗,怎么做?

注意:
文档中所述,可以通过替换显式避免使用序列化程序

render :json

和:

render :json => @your_object.to_json

我们正在寻求一种比上述更优雅的解决方案。
谢谢。

0 投票
1 回答
198 浏览

ruby-on-rails-4 - 如何以线程安全的方式在 /lib 中加载东西?

我尝试过config.autoload_paths += Dir["#{config.root}/lib/**/"]config.eager_load_paths += Dir["#{config.root}/lib/**/"]但不断收到uninitialized constant错误。

我认为这与dependency_loading被禁用有关,因为config.threadsafe!现在是 Rails 4 中的默认设置。

那么从 /lib 目录急切/自动加载内容的正确方法和线程安全方法是什么?

更新:/lib 结构

库/car.rb:

库/汽车/volvo.rb:

抛出的错误是NameError (uninitialized constant Car::CAR_TYPES)

更新2 rails c::

更新 3:有趣的是,Car::Volvo.new有效,但 Car::CAR_TYPES 无法引用。

0 投票
1 回答
1086 浏览

ruby-on-rails - JSON Rails API 的功能测试

我目前正在构建一个由 Rails/rails-api 提供支持的 JSON API。我有一个接受通过 PATCH 请求发送的 JSON 的路由和一个需要访问原始请求/JSON的前置过滤器。

出于测试目的,我在过滤器之前添加了以下内容以显示我的问题:

以下 curl 请求按预期工作:


但是我无法测试此方法,以下调用均不起作用:

  • 包括参数,但不作为 JSON 传输

    /li>
  • 包括参数,但又不是作为 JSON 传输的

    /li>
  • JSON 格式,但不包含在参数中

    /li>
  • JSON 格式,但不包含在参数中

    /li>

这个列表更长,我只是想告诉你我的问题。我也测试了将 theAcceptContent-Typeheaders 都设置为application/json,似乎没有任何帮助。我做错了什么,或者这是 Rails 功能测试中的错误?

0 投票
1 回答
217 浏览

ember.js - EmberJS + GruntJS、Rails-API 和设计

我有一个来自 yeoman 模板的 EmberJS 应用程序,它是在 GruntJS 构建中独立构建的。

Ember 应用程序与 rails-api 后端通信,在开发中我使用 grunt-connect-proxy 将 localhost:3000 代理到 localhost:9000,因此我可以使用我的 GruntJS 设置来构建资产。在产品中,我将构建输出放入公用文件夹中。

我正在尝试使用 Devise 实现身份验证。我对 emberjs 很好,但我对 Rails 或 Devise 不是很有经验,而且我在找到一种在我的设置中使用它的好方法方面没有取得很大成功。我已经看到使用的示例,token_authenticatable但也读到它在 Devise 中已被弃用,所以我想我不应该使用它?我还看到了使用 rails 资产管道的应用程序的这个示例

这是我的选择

  • 尝试找出一种方法来使用我当前的 ember+grunt 设置进行身份验证,该设置与后端 rails-api 和 devise 分开。所有登录都必须通过 ajax 完成,我不能使用 rails 将任何内容呈现给视图。任何地方都有这样的例子吗?

  • 将我的 ember 应用程序放入 Rails 中,以便可以使用资产管道来渲染内容。尝试使用 ajax 登录以获得良好的用户体验

  • 将 ember 应用程序放入 Rails 中,然后进行完整的回发以进行身份​​验证。可能是最简单的选择。

有什么建议吗?

0 投票
4 回答
3825 浏览

ruby-on-rails - Rails 4 — 如何从 JSON API 填充用户模型?

首先,我是 Rails 新手,如果有任何我不正确理解的地方,我深表歉意。我想知道如何通过 API 获取数据来填充模型。

上下文:我正在使用 OAuth2 身份验证和omniauth/devise。

在我的用户控制器客户端(与提供程序相对)中,我获取了至少登录一次的所有用户是这个“客户端应用程序”,我想显示它们。显然,每当新用户登录客户端应用程序时,我不会将他的所有信息存储在客户端数据库中以避免重复。我存储的只是 user_id 及其访问令牌。

因此,我在想,在获取所有用户数据后,我可以将它们填充到用户模型中,然后再将其传递给视图。做这种事情的最好方法是什么?我正在研究命名范围,但我不清楚如何将它应用于我的特定场景。例如,如果能够使用以下方式获取模型中的所有用户,那就太好了:

非常感谢您的帮助。

0 投票
1 回答
150 浏览

ruby-on-rails - 更新 rails-api gem 时没有路由匹配 POST

当我将它添加到我的 gem 文件时( rails 4.0.1 )

我的路线似乎中断了(尽管 rake 路线在之前/之后是相同的)

我在尝试更新一个简单的脚手架模型后得到了这个

当我更新记录时,没有路线匹配 [POST] "/surveys/1"

通过注释掉这个宝石它再次起作用 - 任何想法我做错了什么?

谢谢!

PS:将此添加到 gem 文件中,以便我可以使用强大的参数来遵循 rails 4 中的 railscasts#196

0 投票
1 回答
155 浏览

facebook - 在 Rails Server api 上构建移动路由

我一直在为移动开发人员构建一个用于 iphone 应用程序的服务器 api。我没有移动开发经验,他们也没有使用 ruby​​ on rails 的经验。我试图为应用程序构建一个移动身份验证路由,允许用户通过 facebook 登录。到目前为止,它看起来像这样:

GET '/auth/mobile/fbtoken=:facebook_token&device_id=:device_id&time_zone=:time_zone&os_type=:os_type',到:'sessions#fb_sso'

用于学习如何正确执行此操作的在线资源非常有限或不存在。我找到的有关如何执行此操作的唯一信息涉及使用 Devise 进行身份验证。我们的应用目前配备了 Devise(已添加并已迁移到 User 模型),但当前未通过 Devise 进行身份验证。我能够找到的唯一具体示例之一可以在这篇文章的页面底部找到:

https://www.ruby-forum.com/topic/4409930

这让我相信我在设置路线的方式上走在正确的轨道上,因为除了最后一步“使用 Devise 方法登录:sign_in @user, :event => :authentication”之外,一切都是一样的。这就是促使我尝试将 Devise 集成到我们的应用程序中的原因。

读完之后,我的意思是在某种受限状态下实现 Devise,并且只使用 sign_in 方法。不幸的是,Devise 似乎非常固执己见,更像是一种“全有或全无”的解决方案。我非常不确定如何继续以及如何决定是完全重建我们的应用程序的重要部分以支持 Devise,还是完全放弃它并尝试实施我自己的解决方案。

tl;dr 1) 是否值得重做 Rails 应用程序的很大一部分以使用 Devise?2)没有设计是否可以使这条路线工作?如何?

0 投票
1 回答
359 浏览

html - Rails - 从 api JSON 响应中删除 HTML

当 rails-api 出现 500 之类的错误时,它会在响应中抛出一堆 html,尽管所有其他请求都将输出格式化为 json。

有什么方法可以从响应中删除 html?一个简单的 500 响应,日志中的堆栈跟踪会很棒。

更新: 我已从公用文件夹中删除了这些文件:

但仍然在响应中获得 html。

我相信它正在陷入困境:https ://github.com/rails/rails/blob/043c8707bf0a87beb3906643ddfd1b60f52c1a98/actionpack/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb

0 投票
0 回答
1616 浏览

ruby-on-rails - 设计 + Rail-API。手动登录用户不会设置 current_user

我正在测试一些宝石,因为我即将为 iOS 应用程序创建一个 API。这次我使用 Rails-API 和 Devise 进行用户注册。我遵循了从分叉分叉的要点分叉的这个要点,我做了一些更改,用户可以注册和登录,但是,当我before_filter :authenticate_api_user!在控制器上使用时,登录后 current_api_user 为零。根据divise的源代码,我在命名空间内使用 devise_for ,然后一切都发生了变化。这是我的代码。

路线:

应用程序/api/sessions_controller.rb

应用程序/api/registrations_controller.rb

我希望有一个人可以帮助我。顺便说一句,我真的接受任何关于使用 Rails 创建 API 的最佳方式的建议。这是我的第一次。

先感谢您。

0 投票
1 回答
645 浏览

ruby - 在 Mongoid 中使用 Range 数据类型

我正在使用带有 rails-api ( https://github.com/rails-api/rails-api ) 的 Mongoid (4.0.0.alpha2 )。

我正在寻找在我的模型中使用“范围”(http://mongoid.org/en/mongoid/docs/documents.html#fields)作为数据类型的示例。

我可以在数据类型为“Range”的字段上创建索引吗?

谢谢