假設圖像相關的模型,例如一個與回形針連接,你可以做這個。 (我真的會推薦這個)。
def show
@image = Image.find(params[:id])
published_image = @image.published_image
respond_to do |format|
format.all {
if published_image
send_file published_image.attached_image.path, :type=> published_image.attached_image_content_type
else
raise ActionController::RoutingError.new('Not Found')
end
}
end
end
假設你有另一種方式來告訴這個,你可以有/管理/圖像路線開始一個控制器動作的所有路由,然後那裏調用呈現的路徑的其餘部分文件。例如:
routes.rb
get 'admin/photo/*other', to: 'admin#photos'
admin.controller.rb
def photos
if current_user.admin?
render file: Rails.root.join("private","admin","images",request.path.gsub("/admin/photo/","")
else
render :file => "public/401.html", :status => :unauthorized
end
end
view
image_tag "/admin/photos/id.jpg"
這在理論上的工作,但它可能會比我在想
這裏圖片更加複雜將在公共/管理/圖片託管,但掛的/管理/照片/ ID
似乎相當可行的,我會考慮這個:)所以公共目錄裏面實際上並沒有公開? 'public> kitty.jpg'會被公開,但public'admin> kitty.jpg'對於一個客人來說是完全不可訪問的? – Starkers
哦,好點,也許把它們放在/ private/admin/images之類的其他目錄中。我被分開了。編輯它! –