我有一个控制器,它与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}):

我的 NO 的想法,为什么它的假设我想路线的地方。看来,我必须在一开始的“公共”为了要正确创建的文件,但是我必须为了显示图像删除“公”。有什么想法吗?是否有由处理动态创建的图像/项的更标准的机制?

最佳。

请注意:请没有“上传”插件。所有的文件被由系统创建时,不存在上载。

有帮助吗?

解决方案

当添加文件时,将其添加到文件系统,其中,它位于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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top