嗨,所有的新手问题。
我正在尝试将数据存储在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中获取并将其存储在变量中,并将其设置为私有,而不需要公开它?
class HomeController < ApplicationController
def dashboard
@lookup_booking = ???("/users/1/bookings.json")???
end
endReact仪表板
<%= react_component("Booking", { booking: @lookup_booking})%>发布于 2019-04-23 02:13:58
您可以像发出任何外部请求一样向Bookings JSON端点发出本地请求-使用HTTParty或Faraday之类的内容可能会起作用:
@lookup_booking = HTTParty.get(user_bookings_url(1))但这不会进行身份验证,因此它需要与任何其他请求相同的身份验证。
这样做有点奇怪,除非产生预订的东西是一个单独的服务,或者如果你想让它成为一个服务。如果你打算使用一个代码库,你可能想要做一些类似于arieljuod在评论中建议的事情,并简单地分享代码。
您可以将BookingsController代码分解为一个ActiveSupport::Concern、一个模块或一个Service Object (或者,更简单地说,是User类上的一个方法),这样就可以在BookingsController和HomeController之间干净地共享代码。它可能看起来像这样:
# 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 })%>https://stackoverflow.com/questions/55784572
复制相似问题