首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从Rails获取本地JSON数据,例如bookings.json

如何从Rails获取本地JSON数据,例如bookings.json
EN

Stack Overflow用户
提问于 2019-04-22 00:29:52
回答 1查看 62关注 0票数 0

嗨,所有的新手问题。

我正在尝试将数据存储在react日历中,但它需要使用JSON存储数据。

我注意到,当您搭建scaffold时,rails还会自动为您提供一个JSON版本。

在我的例子中- http://localhost:3000/users/1/bookings.json

它返回JSON格式的[{"first_name":"Fake Name","booking_time":"2019-04-22T02:03:00.000Z","pick_up_time":"2019-04-22T02:03:00.000Z"}]

我知道如何从外部URL获取JSON数据并对其进行解析,但是所有这些外部URL都是公开的,而在我的例子中,预订是私有的。

有没有一种方法可以让我从bookings.json中获取并将其存储在变量中,并将其设置为私有,而不需要公开它?

代码语言:javascript
复制
class HomeController < ApplicationController
  def dashboard
  @lookup_booking = ???("/users/1/bookings.json")???
  end
end

React仪表板

代码语言:javascript
复制
<%= react_component("Booking", { booking: @lookup_booking})%>
EN

回答 1

Stack Overflow用户

发布于 2019-04-23 02:13:58

您可以像发出任何外部请求一样向Bookings JSON端点发出本地请求-使用HTTPartyFaraday之类的内容可能会起作用:

代码语言:javascript
复制
@lookup_booking = HTTParty.get(user_bookings_url(1))

但这不会进行身份验证,因此它需要与任何其他请求相同的身份验证。

这样做有点奇怪,除非产生预订的东西是一个单独的服务,或者如果你想让它成为一个服务。如果你打算使用一个代码库,你可能想要做一些类似于arieljuod在评论中建议的事情,并简单地分享代码。

您可以将BookingsController代码分解为一个ActiveSupport::Concern、一个模块或一个Service Object (或者,更简单地说,是User类上的一个方法),这样就可以在BookingsControllerHomeController之间干净地共享代码。它可能看起来像这样:

代码语言:javascript
复制
# app/services/lookup_user_bookings.rb
class LookupUserBookings 
  def self.bookings_as_json(user_id)
    # complicated logic to find user bookings goes here...
    bookings.as_json
  end
end

# bookings_controller.rb
class BookingsController
  def index
    @bookings = LookupUserBookings.bookings_as_json(current_user)
    render json: @bookings
  end
end

# home_controller
class HomeController
  def dashboard
    @bookings = LookupUserBookings.bookings_as_json(current_user)
  end
end

# dashboard.html.erb

<%= react_component("Booking", { booking: @bookings.to_json })%>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55784572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档