我有一个我希望加载的flash对象,我相信存储该资产的最佳位置是public
目录。假设它存储在public/flash
中,必须有一个更好的方法来转向swf,而不是我在下面所做的。注意'data'元素,它有一个相对路径。
def create_vnc_object
haml_tag :object,
:id => 'flash',
:width => '100%',
:height => '100%',
:type => 'application/x-shockwave-flash',
:data => '../../flash/flash.swf' do
haml_tag :param,
:name => 'movie',
:value => '../../flash/flash.swf'
end
end
是否有某些rails变量指向public
?
答案 0 :(得分:3)
另一种方法是扩展ActionView::Helpers::AssetTagHelper
,这在您使用资产服务器时最有用。这是已经实现javascript_path
和stylesheet_path
的模块。你可以这样做:
module ActionView
module Helpers
module AssetTagHelper
def flash_movie_path(source)
compute_public_path(source, 'flash', 'swf')
end
alias_method :path_to_flash_movie, :flash_movie_path
end
end
end
供参考,ActionView::Helpers::AssetTagHelper
上的the documentation。
答案 1 :(得分:2)
这不会起作用吗?
def create_vnc_object
haml_tag :object,
:id => 'flash',
:width => '100%',
:height => '100%',
:type => 'application/x-shockwave-flash',
:data => '/flash/flash.swf' do
haml_tag :param,
:name => 'movie',
:value => '/flash/flash.swf'
end
end
或者,您可以使用root_url
作为前缀:
def create_vnc_object
haml_tag :object,
:id => 'flash',
:width => '100%',
:height => '100%',
:type => 'application/x-shockwave-flash',
:data => root_url + 'flash/flash.swf' do
haml_tag :param,
:name => 'movie',
:value => root_url + 'flash/flash.swf'
end
end
后者只有在root
文件中有routes.rb
路由时才有效。它会指向您网站的根目录(例如http://example.com/
),它基本上是public
文件夹。