ruby-on-rails – 资源管道中的Rails静态html模板文件和开发模式
我正在使用AngularJS和Rails构建一个网站.我用于模板的
HTML文件存储在/ app / assets / templates下,每次更新路由或更改模板内部嵌套的部分内容时,我需要“触摸”最高级别的文件/ app / assets / templates目录为我正在更改的html文件.
所以如果我有一个页面“edit.html”加载了一个部分“_form.html”,那么每当我更新一个路线或者改变_form.html中的某些东西,我需要确保edit.html被触摸. 这很烦人,很厉害.有没有办法通知资产管道/链轮,以避免缓存app / assets / templates目录? 解决方法
我发现的最好的解决方案是不要将资源管道用于HTML模板文件.
而是做一个名为TemplatesController的控制器,并且只创建一个操作. get /templates/:path.html => 'templates#page',:constraints => { :path => /.+/ } 然后将所有模板文件移动到app / views / templates中 然后在控制器内部,设置以下内容: caches_page :page def page @path = params[:path] render :template => 'templates/' + @path,:layout => nil end 这样,您的所有模板文件将从控制器提供,然后将缓存到公共/模板中.为了避免缓存问题,您可以在模板路径中创建一个时间戳记路径,以便您的缓存文件随版本一起提供: get '/templates/:timestamp/:path.html' => 'templates#page',:constraints => { :path => /.+/ } 这样,您可以在每次上传网站时拥有新的时间戳,并且可以将模板文件夹存储在任何您喜欢的位置.您甚至可以在S3上存储模板文件夹,并具有该资源的URL.然后,无论您的模板文件被寻址,您都可以使用自定义资产方法: templateUrl : <%= custom_asset_template_url('some/file.html') %> 哪里: def custom_asset_template_url(path) "http://custom-asset-server.website.com/templates/#{$some_global_timestamp}/#{path}" end 然后只需将资产重定向到Rails服务器,如果没有找到它,并且它将被生成.或者所有模板文件可以在上传后预先生成. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |