如何在Rake任务中使用asset_url helper

时间:2014-06-29 00:42:53

标签: ruby-on-rails ruby rake sprockets

如何在Rake任务中访问asset_urlasset_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)

4 个答案:

答案 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>