我有一个名称间隔控制器来自我正在创建的宝石,似乎来自这些路线的*_path
或*_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
路线
...
namespace :surveyor do
resources :attempts, :only => [:new, :create]
end
...
其他每条路线都没问题但是这些。我收到错误:
undefined method `team_path' for #<#<Class:0x0000010f330bc0>:0x00000107500840>
团队是另一个模型,我有一个部分调用它,这恰好是第一次调用* _path,如果我改变它,它只是在渲染中继续失败。这是html:
<li><a href="<%= team_path(current_user.team) %>">My Team</a></li>
current_user确实已定义且可用
有什么想法吗?我已经给了一个很好的搜索,但是所有内容都与那些没有在控制器方法中为带有表单的页面定义@variable的人有关,这对我来说并非如此。
编辑(解决方案):
当我将helper Rails.application.routes.url_helpers
添加到我的控制器中时,出于某种原因,一切正常。这似乎是铁轨中的一个错误,而不是任何东西,因为我不应该这样做,但是哦。好吧。
答案 0 :(得分:1)
尝试使用:
app.team_path
访问你不会正常的路径助手(比如在控制台中)。
令人费解的是,只是命名空间控制器会这样做。我会尝试在某个时候重新创建。