我有以下两个rails应用程序 . 一个是仅API,另一个是仅客户端(没有ORM) .
客户
localhost:2000
class Activity < ActiveResource::Base
self.site = "http://localhost:3000/v1"
class ActivitiesController < ApplicationController
def new
@activity = Activity.new
<%= form_with(model: activity, local: true,
url: "http://localhost:3000/v1/activities") do |form| %>
API
localhost:3000
class V1::ActivitiesController < ApplicationController #< ActionController::API
def create
@activity = Activity.new(activity_params)
if @activity.save
render :show, status: :created, location: [:v1, @activity]
Rails.application.config.middleware.insert_before 0, Rack::Cors do
allow do
origins "*"
resource "*",
headers: :any,
# expose: %w(access-token expiry token-type uid client),
methods: %i(get post put patch delete options head)
Update 我不太了解activeresource的概念 . 如果以下问题有意义的话 . 我可以这样使用rails API吗?或者我是否需要使用像typhoeus或savon这样的宝石或构建客户端库?
Questions
@activity已创建,但如何将其重定向到客户端路径而不是API路径?
尝试
-
控制器是否处理?
我试图设置位置: -
客户端网址,看看发生了什么 .
-
使用request.original_url的动态路径
-
使用request.query_attributes的额外参数
-
@ activity.callback在表单中传递属性 .
-
我应该在rack-cors中定义动态路径吗?
我试过: -
将origin定义为Client url
-
set expose:'client'将original_url检索到请求中
-
我是否必须从客户端获取json?
我不知道怎么...... -
有轨道方式吗?
对于每次尝试,在客户端从localhost:2000提交后,它将重定向到localhost:3000处的API URL,并且永远不会返回到客户端 .
# Terminal for localhost:2000
Started GET "/activities/new" for 127.0.0.1 at 2018-01-03 23:38:24 +0100
Processing by ActivitiesController#new as HTML
...
Completed 200 OK in 24ms (Views: 22.4ms)
# Terminal for localhost:3000
Started POST "/v1/activities" for 127.0.0.1 at 2018-01-03 23:38:30 +0100
Processing by V1::ActivitiesController#create
...
Completed 201 Created in 126ms (Views: 73.3ms | ActiveRecord: 30.1ms)