Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.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 Rails url帮助程序在名称间隔控制器中不可用_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails Rails url帮助程序在名称间隔控制器中不可用

Ruby on rails Rails url帮助程序在名称间隔控制器中不可用,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有一个名字间隔控制器,它来自我正在创建的一个gem,当尝试加载其中一个操作时,似乎没有来自路由的*\u路径或*\u url帮助程序可用于任何其他模型。我似乎不明白为什么它们在这个控制器中不可用 控制器 class Surveyor::AttemptsController < ApplicationController load_and_authorize_resource before_filter :load_active_survey def new @particip

我有一个名字间隔控制器,它来自我正在创建的一个gem,当尝试加载其中一个操作时,似乎没有来自路由的
*\u路径
*\u url
帮助程序可用于任何其他模型。我似乎不明白为什么它们在这个控制器中不可用

控制器

class Surveyor::AttemptsController < ApplicationController
 load_and_authorize_resource

 before_filter :load_active_survey

 def new
  @participant = current_user

  unless @survey.nil?
   @attempt = @survey.attempts.new
   @attempt.answers.build
  end
 end

 def create
  @attempt = @survey.attempts.new(params[:survey_attempt])
  @attempt.participant = current_user

  if @attempt.valid? && @attempt.save
    redirect_to view_context.new_attempt, alert: I18n.t("attempts_controller.#{action_name}")
   else
    render :action => :new
   end
  end

  private

  def load_active_survey
   @survey =  Surveyor::Survey.active.first
  end
end
除了这些,其他路线都可以。我得到一个错误:

undefined method `team_path' for #<#<Class:0x0000010f330bc0>:0x00000107500840>
未定义的方法“团队路径”#
团队是另一个模型,我有一个部分调用它,这恰好是对*\u路径的第一个调用,如果我更改它,它只会在渲染过程中继续失败。以下是html:

<li><a href="<%= team_path(current_user.team) %>">My Team</a></li>
  • 当前用户确实已定义且可用

    有什么想法吗?我已经给出了一个很好的搜索结果,但一切都与人们没有在他们的控制器方法中为带有表单的页面定义@variable有关,这对我来说不是这样

    编辑(解决方案):

    由于某种原因,当我将
    helper Rails.application.routes.url\u helpers
    添加到我的控制器中时,一切正常。这似乎更像是rails中的一个bug,因为我不必这么做,但很好。

    尝试使用:

    app.team_path
    
    在通常情况下(如在控制台中)无法访问路径帮助器


    令人费解的是,仅仅给控制器命名就可以做到这一点。我将尝试在某个时候重新创建。

    Do
    rake routes | grep team
    。这将显示与
    团队相关的所有路径。该路径存在吗?是的,所有路径都存在,只是辅助程序似乎仅在该控制器中不可用,所有其他控制器工作正常。我看不到您在控制器中使用路径辅助程序,您说问题出在哪里。您是否发布了一个解决方案,可能是使用帮助程序?我不是在控制器中使用它,而是在视图中使用它。具体地说,在application.html.erb中调用了team_path,在我的/surveyor/trunt/new路径中,该team_path不可用,但在应用程序中的所有其他控制器操作中,它是好的。现在我得到了未定义的局部变量或方法“app”,也
    2.1.0:004>应用程序。surveyor_path尝试在控制台中返回正确的url,但不仅仅是这一个控制器动作视图,您的控制器在gem的目录结构中的位置是什么?它的app/controllers/explorer/truments\u controller.rb。我还找到了解决方案,并在上面编辑了我的问题,很高兴您找到了解决方法。你这样做是作为一个引擎还是只是一个普通的宝石?
    
    app.team_path