2009-07-07 5 views
0

기존 HTML을 IMG 태그로 바꾸는 코드 섹션이 컨트롤러에 있습니다. 다음과 같이 코드는 다음과 같습니다 어떤 이유로누군가이 코드에 어떤 문제가 있는지 말해 줄 수 있습니까?

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 생각을 가지고있다. 파일을 제대로 만들려면 처음에는 "공개"해야하지만 이미지를 표시하려면 "공개"를 제거해야합니다. 이견있는 사람? 동적으로 생성 된 이미지/항목을 다루는 표준 메커니즘이 더 있습니까?

최고.

참고 : 플러그인을 "업로드"하지 마십시오. 모든 파일은 시스템에 의해 생성되고 업로드는 없습니다.

답변

3

파일을 추가 할 때 파일 시스템에 추가하면 파일 시스템은 RAILS_ROOT/public/charts/1_WEEKLY_ACTUAL_LINE.jpg입니다.

파일을 표시하려면 해당 파일을 가리키는 URL이 필요합니다. public 디렉토리에 저장된 파일은 public 디렉토리에 상대적인 경로로 액세스됩니다.

당신은이 같은 시도 할 수 있습니다 : 당신은 데이터베이스의 URL을 저장하고 수행 할 수

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

을 또는 :

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