p.m*_*los 7 assets ruby-on-rails asset-pipeline ruby-on-rails-4.1
我试图从控制器中调用image_url(来自ActionView::Helpers::AssetUrlHelper模块).我的控制器是一个API控制器,可以呈现json响应.因此,控制器准备对象,我jBuilder用于呈现实际的JSON响应.这是代码:
class Api::Mobile::HomeController < Api::Mobile::ApplicationController
include ActionView::Helpers::AssetUrlHelper
def index
@items = [Api::Mobile::HomePageItem.new(
type: 'image',
image: image_url("api/mobile/home/tutor-with-student.jpg"))]
end
end
Run Code Online (Sandbox Code Playgroud)
该图像tutor-with-student.jpg存在于以下文件夹中:
app/assets/images/api/mobile/home/tutor-with-student.jpg
Run Code Online (Sandbox Code Playgroud)
问题是image_url返回值:
http://myhost.com/images/api/mobile/home/tutor-with-student.jpg
Run Code Online (Sandbox Code Playgroud)
代替
http://myhost.com/assets/api/mobile/home/tutor-with-student.jpg
Run Code Online (Sandbox Code Playgroud)
请注意,当我使用image_url实际视图时,该方法返回正确的值.
如何image_url在Controller层上使用该方法以使其返回正确的值?
thu*_*der 14
你应该使用:
ActionController::Base.helpers.asset_url("api/mobile/home/tutor-with-student.jpg", type: :image)
Run Code Online (Sandbox Code Playgroud)
并删除包含模块ActionView :: Helpers :: AssetUrlHelper
此外,请确保已action_controller.asset_host在环境配置文件中设置该值.因此,对于您的生产环境,它应该是config/environments/production.rb,它必须是
config.action_controller.asset_host='myhost.com'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4308 次 |
| 最近记录: |