【问题标题】:Can someone please tell me what is wrong with this code...?有人可以告诉我这段代码有什么问题吗......?
【发布时间】:2010-11-08 14:35:01
【问题描述】:

我在控制器中有一段代码用 IMG 标记替换现有的 HTML。代码如下:

 render :update do |page|
   page.replace_html "chart-div", "<img src=\"#{chart.chart_file}\"/>"  #chart.chart_file is a path
 end

无论出于何种原因,我一直收到以下错误:

  ActionController::RoutingError (No route matches "/public/charts/1_WEEKLY_ACTUAL_LINE.jpg" with {:method=>:get}):

知道为什么它假设我想路由到某个地方。似乎我必须在开头使用“public”才能正确创建文件,但是我必须删除“public”才能显示图像。有什么想法吗?是否有更标准的机制来处理动态创建的图像/项目?

最好的。

注意:请不要“上传”插件。所有文件都是系统创建的,没有上传。

【问题讨论】:

    标签: ruby-on-rails routing public file-handling


    【解决方案1】:

    添加文件时,您将其添加到文件系统中,它位于RAILS_ROOT/public/charts/1_WEEKLY_ACTUAL_LINE.jpg

    当你想显示文件时,你需要一个指向它的 URL。存储在public 目录中的文件通过其相对于public 目录的路径访问。

    你可以试试这样的:

    class Chart < ActiveRecord::Base # or whatever the chart class is
      def chart_url
        chart_file.gsub(%r{^/public}, "")
      end
    end
    

    或者,您可以将 URL 存储在数据库中,然后:

    class Chart < ActiveRecord::Base # or whatever the chart class is
      def chart_file
        "/public#{chart_url}"
      end
    end
    

    【讨论】:

      猜你喜欢
      • 2020-02-21
      • 2020-10-30
      • 1970-01-01
      • 2021-05-22
      • 1970-01-01
      • 2021-11-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多