0

我在控制器中有一段代码用 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”才能显示图像。有什么想法吗?是否有更标准的机制来处理动态创建的图像/项目?

最好的。

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

4

1 回答 1

3

添加文件时,您将其添加到文件系统中,它位于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
于 2009-07-07T06:53:33.343 回答