我之前在public/images/flags/
和public/images/flags_small/
保留了500多张国旗图片。对于我的国家/地区模型中的每个国家/地区,我存储:iso_code
,它与对应的标志图像的名称相同。例如,mx.png是墨西哥旗的名称,因为mx是墨西哥的双字母ISO代码。
我以前有一个帮助方法会返回html,根据国家的iso代码显示图像,以及我是否想要大或小的标记。
使用Rails 3.1,为了符合资产管道,我的印象是这些图像应该进入app/assets/images
文件夹。以下是:
编辑:解决方案 下面的答案是正确的,但我不想每次都输入那么多代码,所以我创建了两个辅助方法:
def flag(country)
image_tag('/assets/flags/' + country.iso_code.downcase + '.png')
end
def small_flag(country)
image_tag('/assets/flag_small/' + country.iso_code.downcase + '.png')
end
答案 0 :(得分:8)
是的,你可以
例如:<%= image_tag 'flags/uk.gif' %>
答案 1 :(得分:0)
作为为Rails 5(来自资源管道以外的资源)动态加载图像的快速解决方案,假设您有一个名为 car 的控制器。
在您的控制器中添加新动作(例如我们的动作称为图像);
def image
path = "C:/pics/.../test.jpg" # just a sample path to test
send_file path, :content_type => 'image/jpg', :disposition => 'inline'
end
将新路线添加到routes.rb;
中的操作get '/img', to: "car#image"
最后在您的ERB文件中,使用;
创建一个图像标记<div>
<%= image_tag url_for(:controller => "home", :action => "image") %>
</div>
这只是为了测试基础知识,你可以让它参数化(根据id,名称等加载图像)