Method: FileColumnHelper#url_for_file_column
- Defined in:
- lib/file_column_helper.rb
#url_for_file_column(object, method, options = nil) ⇒ Object
Creates an URL where an uploaded file can be accessed. When called for an Entry object with id 42 (stored in @entry) like this
<%= url_for_file_column(@entry, "image")
the following URL will be produced, assuming the file “test.png” has been stored in the “image”-column of an Entry object stored in @entry:
/entry/image/42/test.png
This will produce a valid URL even for temporary uploaded files, e.g. files where the object they are belonging to has not been saved in the database yet.
The URL produces, although starting with a slash, will be relative to your app’s root. If you pass it to one rails’ image_tag helper, rails will properly convert it to an absolute URL. However, this will not be the case, if you create a link with the link_to helper. In this case, you can pass :absolute => true to options, which will make sure, the generated URL is absolute on your server. Examples:
<%= image_tag url_for_file_column(@entry, "image") %>
<%= link_to "Download", url_for_file_column(@entry, "image", :absolute => true) %>
If there is currently no uploaded file stored in the object’s column this method will return nil.
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/file_column_helper.rb', line 56 def url_for_file_column(object, method, =nil) case object when String, Symbol object = instance_variable_get("@#{object.to_s}") end # parse options subdir = nil absolute = false if case when Hash subdir = [:subdir] absolute = [:absolute] when String, Symbol subdir = end end relative_path = object.send("#{method}_relative_path", subdir) return nil unless relative_path url = "" url << ActionController::Base.relative_url_root.to_s if absolute url << "/" url << object.send("#{method}_options")[:base_url] << "/" url << relative_path end |