Ruby on rails 如何在rails json API体系结构中呈现javascript前端应用程序?

Ruby on rails 如何在rails json API体系结构中呈现javascript前端应用程序?,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,我正在开发一个Rails应用程序,前端是martyjs/reactjs。 我已经设置了一个与每个模式匹配的路由,因此用户可以跟踪我的reactjs应用程序中的任何链接。 我正在实现登录/注销,我遇到了一个问题。 在我的应用程序\u controller.rb中我设置了一个过滤器: before_action :authenticated_account? def authenticated_account? customer = User::Customer.find_b

我正在开发一个Rails应用程序,前端是martyjs/reactjs。 我已经设置了一个与每个模式匹配的路由,因此用户可以跟踪我的reactjs应用程序中的任何链接。 我正在实现登录/注销,我遇到了一个问题。
在我的应用程序\u controller.rb中
我设置了一个过滤器:

  before_action :authenticated_account?
  def authenticated_account?
        customer = User::Customer.find_by_session_token cookies.signed[:session_token]
        if customer.verify_session!(cookies.signed[:session_token],request.remote_ip ) then else resp = Response.new("Not authorized", nil, 401) end
         return respond resp if resp
      end
但正确地说,这会拒绝我的呈现接口,因为服务器接收到带有消息的JSON。 当我的应用程序已经加载时,这是一个很好的响应,因为我的应用程序优雅地截获了401代码


但如果用户打开一个窗口直接进入我的reactjs应用程序的深层链接,我无法找到呈现我的js应用程序并响应代码的解决方案。

正如我所说,我知道我遗漏了一些东西。我只是将一个控制器操作专用于使用onePageApplication呈现html页面,并跳过了该应用程序的身份验证检查

因此,回顾一下:

为带有rails的onePageApp提供服务

设置api调用的路由:

namespace :api do
    ...
  end
以及为UI提供服务的路径:

scope "/", :format => false do

    get "/" => "application#uiserve"
    get "/*path" => "application#uiserve"

    root :to => "application#index"

  end
这样,当用户在我的应用程序中输入深度链接时,它将始终匹配,并与带有JS代码的HTML页面一起提供


应用程序将发出的请求将位于命名空间
:api
下,因此它将正确路由

您可以尝试使用request.xhr吗?要检查它是js请求而不是json,然后使用js.erb重定向,我认为解决方案必须在rails方面。我肯定遗漏了simplei给出的解决方案,它在rails端用于检测请求是否为json/js。。。