【问题标题】:Rails 4: undefined method `asset_path'Rails 4:未定义的方法“asset_path”
【发布时间】:2015-02-18 22:34:21
【问题描述】:

我正在尝试在我的控制器中使用asset_path 来生成放置在我的assets/data/ 目录中的pdf 的路径。这在 Rails 4 中已经过时了吗?

这是我抛出错误的控制器代码:

  def beg_1
    File.open(asset_path("ee-beg-1.pdf"), 'r') do |f|
      send_data f.read.force_encoding('BINARY'), :filename => "ee-beg-1.pdf", :type => "application/pdf"
    end
  end  

【问题讨论】:

  • 也许它需要像这样包裹在一个字符串中? "#{asset_path('ee-beg-1.pdf')}"
  • @NielsB。你是对的,asset_path 返回一个字符串,这就是 File.open() 为 filename 参数所采用的:ruby-doc.org/core-2.1.4/File.html#method-c-open
  • 更改为File.open('app/assets/data/ee-beg-1.pdf')
  • 恰到好处!您是否碰巧知道如何在浏览器中查看它而不是下载 PDF?抱歉,这是一个不同的问题,所以如果您不想在这里回答,我理解。
  • 附带说明,我强烈建议您不要在资产目录中为您的网站/应用程序提供可下载内容。 Assets 目录在 Rails 应用程序中有一个特殊的用途,它不仅仅是一个文件存储。我建议从 lib 中的子目录提供下载。

标签: ruby-on-rails


【解决方案1】:

asset_path 是一个视图助手。它在 Rails 4 中并没有过时。

请参阅#asset_pathhttp://api.rubyonrails.org

这个类似的问答应该为您提供解决方案:

Access Asset Path from Rails Controller

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-24
    相关资源
    最近更新 更多