Mis*_*cha 532
在Rails 3和更新版本中:
Rails.root
Run Code Online (Sandbox Code Playgroud)
它返回一个Pathname
对象.如果你想要一个字符串,你必须添加.to_s
.如果您想在Rails应用程序中使用其他路径,可以join
像这样使用:
Rails.root.join('app', 'assets', 'images', 'logo.png')
Run Code Online (Sandbox Code Playgroud)
在Rails 2中,您可以使用RAILS_ROOT
常量,即字符串.
mal*_*cke 104
为了超级正确,您应该使用:
Rails.root.join('foo','bar')
Run Code Online (Sandbox Code Playgroud)
这将允许您的应用程序在/
不是目录分隔符的平台上工作,任何人都可以尝试在其中运行它.
Anu*_*haw 21
您可以使用变量访问rails app path RAILS_ROOT
.
例如:
render :file => "#{RAILS_ROOT}/public/layouts/mylayout.html.erb"
Run Code Online (Sandbox Code Playgroud)
And*_*rew 15
除了所有其他正确的答案,因为Rails.root
是一个Pathname
对象,这将不起作用:
Rails.root + '/app/assets/...'
Run Code Online (Sandbox Code Playgroud)
你可以用类似的东西 join
Rails.root.join('app', 'assets')
Run Code Online (Sandbox Code Playgroud)
如果你想要一个字符串使用这个:
Rails.root.join('app', 'assets').to_s
Run Code Online (Sandbox Code Playgroud)
在某些情况下,您可能需要 Rails 根目录而不必加载 Rails。
例如,当 TDD 模型不依赖于 Rails 时,通过要求spec_helper
而不是rails_helper
.
# spec/spec_helper.rb
require 'pathname'
rails_root = Pathname.new('..').expand_path(File.dirname(__FILE__))
[
rails_root.join('app', 'models'),
# Add your decorators, services, etc.
].each do |path|
$LOAD_PATH.unshift path.to_s
end
Run Code Online (Sandbox Code Playgroud)
这使您可以轻松地从规范文件中加载普通的旧 Ruby 对象。
# spec/models/poro_spec.rb
require 'spec_helper'
require 'poro'
RSpec.describe ...
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
252278 次 |
最近记录: |