Rails 3: Как получить путь к изображению в контроллере?

Чтобы получить путь к изображению в контроллере, я использую следующий метод:

class AssetsController < ApplicationController
  def download(image_file_name)
    path = Rails.root.join("public", "images", image_file_name).to_s
    send_file(path, ...)
  end
end

Есть ли лучший способ найти путь?

24
задан Misha Moroshko 29 June 2011 в 10:27
поделиться

3 ответа

ActionController::Base.helpers.asset_path('missing_file.jpg')

Доступ к пути актива из контроллера Rails

58
ответ дан 28 November 2019 в 22:15
поделиться

view_context.image_path('noimage.jpg')

7
ответ дан 28 November 2019 в 22:15
поделиться

view_context работает для меня в Rails 4.2 и Rails 5.

Найти некоторые коды в Rails объясняет репо view_context:

# definition
module ActionView
  # ...
  module Rendering
    # ...
    def view_context
      view_context_class.new(view_renderer, view_assigns, self)
    end
  end
end

# called in controller module
module ActionController
  # ...
  module Helpers
    # Provides a proxy to access helper methods from outside the view.
    def helpers
      @_helper_proxy ||= view_context
    end
  end
end
0
ответ дан 28 November 2019 в 22:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: