我在控制器中有一段代码,用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”才能显示图像。有什么想法吗?是否有更标准的机制来处理动态创建的图像/项目?
最佳。
注意:请不要“上传”插件。所有文件都是由系统创建的,没有上传。
答案 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