Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 如何阻止助手方法应用于特定控制器?_Ruby On Rails 3_Subdomain_Helpermethods - Fatal编程技术网

Ruby on rails 3 如何阻止助手方法应用于特定控制器?

Ruby on rails 3 如何阻止助手方法应用于特定控制器?,ruby-on-rails-3,subdomain,helpermethods,Ruby On Rails 3,Subdomain,Helpermethods,我有一个helper_方法,允许链接从子域中转义。然而,它正在影响我的视频控制器,因为它本质上似乎否定了“当前事件”方法,而不是在事件控制器中 在过去的4天里,我尝试了几十种不同的方法,这样我仍然可以从子域中逃离我的链接,但仍然允许视频控制器工作 我认为实现这一点的最佳方法是将视频控制器从助手方法中排除,但我不确定如何排除(或者这是否是前进的最佳方法-我显然是个傻瓜!)请提供任何建议?!相关代码如下: module UrlHelper def url_for(options = nil)

我有一个helper_方法,允许链接从子域中转义。然而,它正在影响我的视频控制器,因为它本质上似乎否定了“当前事件”方法,而不是在事件控制器中

在过去的4天里,我尝试了几十种不同的方法,这样我仍然可以从子域中逃离我的链接,但仍然允许视频控制器工作

我认为实现这一点的最佳方法是将视频控制器从助手方法中排除,但我不确定如何排除(或者这是否是前进的最佳方法-我显然是个傻瓜!)请提供任何建议?!相关代码如下:

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
视频控制器

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
当前事件方法

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

您可能希望创建一个新函数
test
,它只执行以下操作

module UrlHelper
  def test
    puts "Test is called"
  end
end 
如果这样做有效的话,你知道它不包括失败的,但它必须是方法。
否则,您知道该模块未包含在内,您可以缩小搜索范围。

您查看了吗?我没有,但我现在尝试了这个,但它没有帮助解决问题。出于某种原因,我不能只在我的事件控制器中包含urlhelper(我很确定我正在尝试在“EventsController”下正确地“包含urlhelper”您是否尝试过该包含是否有效?您可能希望创建一个新函数
def test
,它只执行类似于
put“test is called”的操作
如果这样做有效,你知道它不包含失败,但它必须是方法。否则,你知道模块不包含,你可以缩小搜索范围。我已经确定它不包含在内。只有我的“应用程序助手”包含在内,因为测试方法在我将其放入其中时有效,但在我将其放入任何其他he中时无效lper方法并尝试将其包含在事件控制器中。谢谢!我已经重新检查了如何包含helper方法,但它毕竟是错误的,因此它现在仅在该控制器上本地工作。快速q如此最佳实践-我现在应该删除此问题还是将其保留?再次谢谢。