在控制器操作中从公共服务文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在控制器操作中从公共服务文件相关的知识,希望对你有一定的参考价值。
在我的项目中,我们有一个单页面应用程序,我们的构建过程将应用程序编译为public/index.html
中的单个静态文件。
单页应用程序负责处理应用程序中的所有路由,因此无论您是访问site.com
还是site.com/foo/bar/action
或site.com/☃
,我都希望Rails应用程序能够为public/index.html
提供服务
我有这条路线:
match '*path', to: 'foo#index', via: :all
在FooController中:
class FooController < ApplicationController
def index
render 'index.html', layout: false
end
end
这不像我希望的那样有效;我得到错误Missing template foo/index.html, application/index.html
作为Rails控制器操作的一部分,是否可以从public
提供资产?
答案
在Rails 5中,我通过这样做得到了这个
render file: "public/examplename.html", layout: false
另一答案
这比我想象的要容易得多。
我变了:
render 'index.html', layout: false
至
render 'public/index.html', layout: false
一切都按预期工作。
另一答案
这似乎已经改变了。我正在尝试暂时为我的应用程序的管理部分呈现静态文件,这将是一个通过API与rails通信的VueJS SPA。我必须做以下事情:
的routes.rb
match '*path', :to => 'console#index', :constraints => { :subdomain=>'console'}, :via=>:all
console_controller.rb
class ConsoleController < ApplicationController
def index
render :file=>'/public/console/index.html', :layout=>false
end
end
所以在路径上使用:file而不是没有参数 - 因为否则Rails 5试图将其视为普通视图模板。
通过该路径匹配和子域,这看起来效果很好,因为所有路由都将传递到VueJS路由器。
以上是关于在控制器操作中从公共服务文件的主要内容,如果未能解决你的问题,请参考以下文章
如何在 ViewPager 中从 Activity 移动到 Fragment?未找到片段 ID 的视图