如何在Rake任务中访问asset_url
或asset_path
Sprockets URL助手?
我有一个Rake任务,用一些模型为数据库加以种子。其中一个模型具有Rails应用程序中资产的URL。如何在Rake任务中创建此资产的URL?
SomeModel.create(image: asset_url('awesome.png'))
现在我的真的解决了这个问题。
path = URI.join(Rails.application.routes.url_helpers.root_url, '/assets/images/awesome.png')
SomeModel.create(image: path.to_s)
答案 0 :(得分:3)
请查看此博客,其中介绍了如何以正确的方式使用Rails.application.routes.url_helpers
。
http://hawkins.io/2012/03/generating_urls_whenever_and_wherever_you_want/
答案 1 :(得分:2)
我刚刚在rails 5.0.2上测试
将其添加到rake类或控制器类
include ActionView::Helpers::AssetUrlHelper
这将允许您使用所有这些方法 http://api.rubyonrails.org/classes/ActionView/Helpers/AssetUrlHelper.html
答案 2 :(得分:1)
您必须包含ActionView::Helpers
模块然后可以使用asset_path及其他帮助程序。
include ActionView::Helpers
请参阅Using helpers in model: how do I include helper dependencies?
答案 3 :(得分:0)
在您的佣金任务中:
<div class="form-group">
@Html.LabelFor(model => model.NatureKindID, "Kind of nature", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
<div id="divDropNatureKinds">
@Html.Action("ReloadDropDownListNatureKinds", "Modals", new { area = "Admin" })
</div>
@Ajax.ActionLink(" ", "CreateModalNatureKinds", "Modals", new { area = "Admin" }, new AjaxOptions { UpdateTargetId = "modaldropbody", OnComplete = "openModal" }, new { @class = "glyphicon glyphicon-plus" })
@Html.ValidationMessageFor(model => model.NatureKindID, "", new { @class = "text-danger" })
</div>
</div>