2012-12-19 2 views
0

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

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

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

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 
+0

Вы посмотрели [этот пост] (http://stackoverflow.com/questions/1179865/why-are-all-rails-helpers-available-to-all-views-all-the-time- is-there-a-way-t) еще? – Vikko

+0

У меня не было, но я сейчас пробовал это, и это не помогло решить проблему. По какой-то причине я не могу просто включить urlhelper в контроллер событий (и я уверен, что я пытаюсь сделать это правильно), включив UrlHelper в «EventController». – jfdimark

+0

. Пробовали ли вы, если включение вообще работает? Возможно, вы захотите создать новую функцию 'def test', которая делает только что-то вроде« puts »Test, называется« ' Если это работает, вы знаете, что это не включает это, но это должен быть метод. В противном случае вы знаете, что модуль не входит, и вы можете сузить поиск. – Vikko

ответ

0

Принимала вы посмотрите на this post еще?

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

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

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

Смежные вопросы