Как остановить использование вспомогательного метода для определенного контроллера?

У меня есть helper_method, который позволяет ссылкам выходить из поддоменов. Однако это влияет на мой videos_controller, поскольку, по-видимому, он отрицает метод current_event, когда его нет в контроллере событий.

За последние 4 дня я попробовал несколько десятков различных способов сделать так, чтобы я мог по-прежнему экранировать свои ссылки с субдомена, но все еще позволял работать videos_controller.

Я думаю, что лучший способ добиться этого - исключить videos_controller из вспомогательного метода, но я не уверен, как (или если это действительно лучший путь вперед - я, очевидно, нуб!) Любые предложения, пожалуйста?! Соответствующий код ниже:

module UrlHelper
  def url_for(options = nil)
      if request.subdomain.present? and request.subdomain.downcase != 'www' and !options.nil? and options.is_a?(Hash) and options.has_key? :only_path and options[:only_path] 
        options[:only_path] = false 
      end
      super
  end
end

Videos_controller

def new
    if current_event?
      @video = current_event.videos.new
    else
      @video = Video.new
    end
  end

  def create
    if current_event.present?
      @video = current_event.videos.new(params[:video])
      @video.user_id = current_user.id
       key = get_key_from_the_cloud
      @video.key = key
    else
      @video = current_user.videos.new(params[:video])
      @video.user_id = current_user.id
      key = get_key_from_the_cloud
      @video.key = key
    end
    if @video.save
      flash[:success] = "Video uploaded!"
      redirect_to root_url(subdomain: => current_event.name)
    else
      flash[:error] = "#{@video.errors.messages}"
      render :new
    end
  end

метод current_event

  def current_event
    if request.subdomain.present?
      @event = Event.find_by_name(request.subdomain)
    end
  end

1 ответ

Решение

Вы уже посмотрели этот пост?

Возможно, вы захотите создать новую функцию test это только делает что-то вроде

module UrlHelper
  def test
    puts "Test is called"
  end
end 

Если это работает, вы знаете, что это не в том числе и неудача, но это должен быть метод. В противном случае вы знаете, что модуль не включен, и вы можете сузить поиск.

Другие вопросы по тегам