在我阅读的文档中:
使用\ A和\ z匹配字符串的开头和结尾,^和$匹配行的开头/结尾.
我将应用正则表达式来检查用户提交的用户名(或电子邮件是否相同).我应该validates_format_of
在模型中使用哪个表达式?我无法理解其中的区别:我一直用^和$ ...
有谁知道如何在Rails 3.1中向资产管道添加另一个文件夹?
我想以app/assets/fonts
同样的方式app/assets/images
服务.
更新:5-7-2013
只是为将来发现此问题以明确添加资产路径的人添加一些说明,在application.rb文件中:
config.assets.paths << "#{Rails.root}/app/assets/fonts"
Run Code Online (Sandbox Code Playgroud)
但是,由于上面的路径app/assets
不在你明确添加它,你只需要重新启动rails应用程序,这样Sprockets就可以把它拿起来.
你必须明确地添加是外面的路径app/assets
,lib/assets
或者vendor/assets
,只是记得,虽然链轮拿起新的文件夹是存在,当你的应用程序中加载,在我的经验,它不拿起资产路径新的文件夹,而不重启.
我有一个Rails 4应用程序,我正在尝试使用自定义字体.
我已经关注了很多关于这方面的教程,不知何故它只是不适用于我的应用程序.
我正在使用application.css.less
并有以下声明:
@font-face {
font-family: 'HDVPeace';
src: font-url('HDV_Peace.eot');
src: font-url('HDV_Peace.eot?iefix') format('eot'),
font-url('HDV_Peace.woff') format('woff'),
font-url('HDV_Peace.ttf') format('truetype'),
font-url('HDV_Peace.svg#webfont') format('svg');
}
Run Code Online (Sandbox Code Playgroud)
注意:我尝试过使用 url()
而不是 font-url()
.前者在控制台上生成404错误,后者似乎根本不做任何事情.在资源下的chrome dev工具中,字体文件不会出现在 文件夹下assets
或任何位置
在我的config/application.rb
身上:
config.assets.paths << Rails.root.join('app', 'assets', 'fonts')
Run Code Online (Sandbox Code Playgroud)
在我config/environments/development.rb
和config/environments/production.rb
我都有:
config.assets.paths << Rails.root.join('app', 'assets', 'fonts')
config.assets.precompile += %w( .svg .eot .woff .ttf)
Run Code Online (Sandbox Code Playgroud)
我的字体文件位于app/assets/fonts
以下文件夹中,并且不包含在...
我错过了什么?
更新:
文件夹结构
app
|----assets
|----fonts
|----HDV_Peace.eot
|----HDV_Peace.svg
|----HDV_Peace.ttf
|----HDV_Peace.woff
Run Code Online (Sandbox Code Playgroud) 我使用以下@font-face
声明无法使用我的Rails 3.1应用程序.我把资产管道的字体在其所谓的"字体"自己的文件夹一起images
与stylesheets
和javascripts
这是我使用的声明(由Font Squirrel生成.)
@font-face {
font-family: 'ChunkFiveRegular';
src: url('Chunkfive-webfont.eot');
src: url('Chunkfive-webfont.eot?#iefix') format('embedded-opentype'),
url('Chunkfive-webfont.woff') format('woff'),
url('Chunkfive-webfont.ttf') format('truetype'),
url('Chunkfive-webfont.svg#ChunkFiveRegular') format('svg');
font-weight: normal;
font-style: normal;
}
Run Code Online (Sandbox Code Playgroud)
有人在他们的Rails 3.1应用程序上成功使用@ font-face吗?
更新
我刚刚阅读了这个主题http://spin.atomicobject.com/2011/09/26/serving-fonts-in-rails-3-1/,它说url
要font-url
在声明中改变.不幸的是,这似乎没有用.
我正在研究如何将自定义字体添加到我的Rails应用程序中,例如通过fonts
在assets文件夹中添加一个文件夹 - 我无法找到关于如何执行此操作的"官方"Rails方式.
是的,这里有很多关于此事的问题/答案,看起来都是他们自己的黑客.但是,这种常见做法不应该归功于Rails着名的"配置约定"吗?
或者如果我错过了 - 关于如何在Rails应用程序中组织字体的文档参考?
fonts assets directory-structure ruby-on-rails ruby-on-rails-4
放置字体 app/assets/fonts
添加
Add the fonts path
config.assets.paths << Rails.root.join('app', 'assets', 'fonts')
Precompile additional assets
config.assets.precompile += %w( .svg .eot .woff .ttf )
Run Code Online (Sandbox Code Playgroud)
在production.rb和development.rb中
以css链接的字体如:
@font-face {
font-family: 'Icomoon';
src:url('/assets/icomoon.eot');
src:url('/assets/icomoon.eot?#iefix') format('embedded-opentype'),
url('/assets/icomoon.svg#icomoon') format('svg'),
url('/assets/icomoon.woff') format('woff'),
url('/assets/icomoon.ttf') format('truetype');
font-weight: normal;
font-style: normal;
}
Run Code Online (Sandbox Code Playgroud)
似乎在开发中工作.但在HEROKU似乎并不奏效.它找不到/assets/icomoon.eot.
此链接中的解决方案似乎不起作用
我无法在生产中的Rails 4应用程序中加载字体,它在开发中正常工作.
在部署时,资产在服务器上进行预编译.
我有我的字体
app/assets/fonts
我的app.css:
@font-face {
font-family: 'WalkwayBoldRegular';
src: url('Walkway_Bold-webfont.eot');
src: url('Walkway_Bold-webfont.eot?#iefix') format('embedded-opentype'),
url('Walkway_Bold-webfont.woff') format('woff'),
url('Walkway_Bold-webfont.ttf') format('truetype'),
url('Walkway_Bold-webfont.svg#WalkwayBoldRegular') format('svg');
font-weight: normal;
font-style: normal;
}
Run Code Online (Sandbox Code Playgroud)
在我的production.rb中,我有:
config.assets.precompile << Proc.new { |path|
if path =~ /\.(eot|svg|ttf|woff)\z/
true
end
}
Run Code Online (Sandbox Code Playgroud) 我的字体资产在生产中没有摘要的情况下出现了问题.我一耙资产:预编译得到:
5futurebit-webfont-c133dbefd9e1ca208741ed53c7396062.eot
Run Code Online (Sandbox Code Playgroud)
我试图将它与scss中的font-face链接到asset-url,asset-path,font-url和font-path,但所有这些都最终输出路径:
/assets/5futurebit-webfont.eot
Run Code Online (Sandbox Code Playgroud)
现在我正在将/ app/assets/fonts中的资产直接复制到/ public/assets /但是感觉不是这样做的.
我安装了一个bootstrap主题,一切都在本地运行良好.但是,当我去推送到heroku时,我的应用程序找不到字体.我预编译资产并推送到heroku,但没有图标.
所以,我在developer.rb中使用以下内容创建了像heroku这样的开发环境:
config.assets.debug = true
# Disable Rails's static asset server (Apache or nginx will already do this).
config.serve_static_assets = true
# Compress JavaScripts and CSS.
config.assets.js_compressor = :uglifier
# config.assets.css_compressor = :sass
# Do not fallback to assets pipeline if a precompiled asset is missed.
config.assets.compile = false
# Generate digests for assets URLs.
config.assets.digest = true
Run Code Online (Sandbox Code Playgroud)
现在,我的开发环境找不到字体文件.字体文件位于两个位置:
app/assets/fonts/fontawesome-webfont.*
public/assets/fontawesome-webfont.*
Run Code Online (Sandbox Code Playgroud)
但是,我收到此错误:
ActionController::RoutingError (No route matches [GET] "/assets/fontawesome-webfont.svg"):
Run Code Online (Sandbox Code Playgroud)
这是从预编译的css文件(application-xxxxxxxxx.css)加载它们的方式:
@font-face {
font-family: 'FontAwesome';
src: url('fontawesome-webfont.eot?v=4.0.3');
src: url('fontawesome-webfont.eot?#iefix&v=4.0.3') format('embedded-opentype'), url('fontawesome-webfont.woff?v=4.0.3') format('woff'), …
Run Code Online (Sandbox Code Playgroud) 我试图通过CSS加载一些自定义字体@font-face
.我正在使用rails fonts_path
方法.它在我的开发浏览器中成功生成了正确的路径:
/assets/fonts/my_font.eot?#iefix
Run Code Online (Sandbox Code Playgroud)
但是它将此路径附加到0.0.0.0:3000
(rails开发服务器),这可能不是我的Rails项目中/ assets/fonts /的位置.我不知道Rails路由的路由与Rails资产之类的关系.
这是错误:
Failed to load resource: the server responded with a status of 404 (Not Found) http://0.0.0.0:3000/assets/fonts/my_Ffent.woff
Run Code Online (Sandbox Code Playgroud)
这是我的样式表:
<style type="text/css">
@font-face{
font-family:"My Font";
src:url(<%=font_path('/assets/fonts/my_font.eot?#iefix')%>);
src:url(<%=font_path('/assets/fonts/my_font.eot?#iefix')%>) format("eot"),url(<%=font_path('/assets/fonts/my_font.woff')%>) format("woff"),url(<%=font_path('/assets/fonts/my_font.ttf')%>) format("truetype"),url(<%=font_path('/assets/fonts/my_font.svg#c1b10d74-5304-41c3-b9de-00f29187df91')%>) format("svg");
}
</style>
Run Code Online (Sandbox Code Playgroud)
样式表放在application.html.erb
哪个可能是问题的一部分?它在<head>
标签中定义.
我们在 Heroku 上托管了一个 Rails 应用程序,并且在从公共文件夹中提供一些静态资产时遇到了一些麻烦。(我知道,这是不推荐的。我们实际上使用 CloudFront 和我们的主应用程序的自定义来源,因此我们仍然可以获得 CDN 的好处。但这与这个问题无关。)
一些资产表现良好,完全符合预期。例如:/404.html
,/favicon.png
其他人返回 HTTP 406 错误: /video-js/swf/video-js-4.1.0.swf
导轨 4.1.1
红宝石 2.1.2
该rails_12factor
宝石是否存在。
production.rb 文件集 config.serve_static_assets = true
该文件肯定存在.. 在 Heroku 上使用控制台:
File.size("/app/public/video-js/swf/video-js-4.1.0.swf")
=> 14059
但是当我尝试访问该文件时,我收到了HTTP 406 Not Acceptable
响应
curl -I http://my-rails-application.com/video-js/swf/video-js-4.1.0.swf
返回:
HTTP/1.1 406 Not Acceptable
Content-length: 0
Content-Type: text/html; charset=utf-8
Date: Wed, 04 Jun 2014 02:25:37 GMT
Status: 406 Not Acceptable
X-Request-Id: d184b097-7326-49cb-ad05-539459f7df08
X-Runtime: 0.532988
Connection: keep-alive
我尝试为 swf 文件 ( Mime::Type.register …
我正在试图找出如何适应在Rails 4中使用的wrap bootstrap主题.
主题使用简单线图标.我试图将这些文件移动到我的app/assets文件夹中的字体文件夹,以及我的vendor/assets/css文件夹中的css文件和vendor/assets/javascript文件夹中的js文件夹.
我不明白如何重写css中的路径,以便以一种能够读取它们的方式引用资产.
例如,其中一个css文件包括以下内容:
@font-face {
font-family: 'Simple-Line-Icons';
src: url("../../fonts/Simple-Line-Icons.eot");
src: url("../../fonts/Simple-Line-Icons.eot?#iefix") format("embedded-opentype"), url("../../fonts/Simple-Line-Icons.woff") format("woff"), url("../../fonts/Simple-Line-Icons.ttf") format("truetype"), url("../../fonts/Simple-Line-Icons.svg#Simple-Line-Icons") format("svg");
font-weight: normal;
font-style: normal;
}
Run Code Online (Sandbox Code Playgroud)
我知道url(../ ..部分是rails的问题.我无法弄清楚的是如何解决它.
我在我的生产环境中安装了rails-12factor gem.我尝试了一百万种变化(在导轨指南中显示),但我找不到任何有用的东西.
谁能看到该怎么办?
本文建议不要在引用供应商资产字体文件中包含'fonts'文件夹.https://gist.github.com/iamatypeofwalrus/6467148
我已经尝试过包含和排除它,但两种方式都没有效果.
本文建议供应商文件无法在不修改初始化程序的情况下存储字体.我试过了,但它也没有用. 在Rails资产管道中使用字体
Rails.application.config.assets.paths
=> ["/Users/cf3/app/assets/images", "/Users/cf3/app/assets/javascripts", "/Users/cf3/app/assets/stylesheets", "/Users/cf3/vendor/assets/fonts", "/Users/cf3/vendor/assets/javascripts", "/Users/cf3/vendor/assets/stylesheets", "/Users/lem/.rvm/gems/ruby-2.3.0/gems/underscore-rails-1.8.3/vendor/assets/javascripts", "/Users/lem/.rvm/gems/ruby-2.3.0/gems/gmaps4rails-2.1.2/vendor/assets/javascripts", "/Users/lem/.rvm/gems/ruby-2.3.0/gems/chosen-rails-1.4.3/vendor/assets/images", "/Users/lem/.rvm/gems/ruby-2.3.0/gems/chosen-rails-1.4.3/vendor/assets/javascripts", "/Users/lem/.rvm/gems/ruby-2.3.0/gems/chosen-rails-1.4.3/vendor/assets/stylesheets", "/Users/lem/.rvm/gems/ruby-2.3.0/gems/chartkick-1.4.1/app/assets/javascripts", "/Users/lem/.rvm/gems/ruby-2.3.0/gems/formtastic-2.2.1/app/assets/stylesheets", "/Users/lem/.rvm/gems/ruby-2.3.0/bundler/gems/surveyor-5281b317a559/lib/assets/images", "/Users/lem/.rvm/gems/ruby-2.3.0/bundler/gems/surveyor-5281b317a559/lib/assets/javascripts", "/Users/lem/.rvm/gems/ruby-2.3.0/bundler/gems/surveyor-5281b317a559/lib/assets/stylesheets", "/Users/lem/.rvm/gems/ruby-2.3.0/gems/dependent-fields-rails-0.4.2/vendor/assets/javascripts", "/Users/lem/.rvm/gems/ruby-2.3.0/gems/cocoon-1.2.6/app/assets/javascripts", "/Users/lem/.rvm/gems/ruby-2.3.0/gems/jquery-rails-4.0.5/vendor/assets/javascripts", "/Users/lem/.rvm/gems/ruby-2.3.0/gems/coffee-rails-4.1.0/lib/assets/javascripts", "/Users/lem/.rvm/gems/ruby-2.3.0/bundler/gems/momentjs-rails-eda1b74512db/vendor/assets/javascripts", "/Users/lem/.rvm/gems/ruby-2.3.0/gems/bootstrap-slider-rails-5.3.1/vendor/assets/javascripts", "/Users/lem/.rvm/gems/ruby-2.3.0/gems/bootstrap-slider-rails-5.3.1/vendor/assets/stylesheets", "Rails/vendor/assets/fonts", "/Users/lem/.rvm/gems/ruby-2.3.0/gems/bootstrap-sass-3.3.5.1/assets/stylesheets", "/Users/lem/.rvm/gems/ruby-2.3.0/gems/bootstrap-sass-3.3.5.1/assets/javascripts", "/Users/lem/.rvm/gems/ruby-2.3.0/gems/bootstrap-sass-3.3.5.1/assets/fonts", "/Users/lem/.rvm/gems/ruby-2.3.0/gems/bootstrap-sass-3.3.5.1/assets/images", "/Users/lem/.rvm/gems/ruby-2.3.0/gems/font-awesome-sass-4.4.0/assets/stylesheets", "/Users/lem/.rvm/gems/ruby-2.3.0/gems/font-awesome-sass-4.4.0/assets/fonts"]
Run Code Online (Sandbox Code Playgroud)
Heroku的
我现在发现这篇文章,这表明对于生产中的heroku合规性,我需要用资产路径助手替换所有内容并重命名文件以将.erb添加到images和css以及.coffee到js.在我这样做之前,有人可以确认这实际上是必需的,以及如何更改上述css文件以符合heroku要求.