有人可以告诉我这段代码有什么问题......?

时间:2009-07-07 06:29:11

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

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

最佳。

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

1 个答案:

答案 0 :(得分: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