Ruby on rails Rails url帮助程序在名称间隔控制器中不可用
我有一个名字间隔控制器,它来自我正在创建的一个gem,当尝试加载其中一个操作时,似乎没有来自路由的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
*\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