2012-12-19 59 views
0

我有一個helper_method允許鏈接從子域轉義。然而,它影響我的videos_controller,因爲它本質上似乎是否定事件控制器中的'current_event'方法。如何停止應用到特定控制器的幫助器方法?

我在過去的4天裏嘗試了幾十種不同的方式,使得我仍然可以從子域中逃脫我的鏈接,但仍然允許videos_controller工作。

我認爲實現這一目標的最好方法是從幫助器方法中排除videos_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-是 - 那裏 - 方式 - t)? – Vikko

+0

我沒有,但我現在已經嘗試過,並沒有幫助解決問題。出於某種原因,我不能只包括urlhelper在我的事件控制器(我敢肯定,我正在努力做到這一點'包括UrlHelper'下的'EventsController' – jfdimark

+0

你試過,如果包容工程呢?你可能想要創建一個新的函數'def test',它只執行像'puts「這樣的測試稱爲」' 如果這樣做你知道它不包括失敗,但它必須是方法,否則你知道模塊是不包括在內,您可以縮小搜索範圍 – Vikko

回答

0

你看看this post了嗎?

您可能需要創建一個新的功能test,只有做類似

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

如果這樣的作品,你知道它不包括失敗,但它必須是方法。 否則您知道該模塊不包含在內,您可以縮小搜索範圍。

相關問題