Rails url helper在名称间隔控制器中不可用

时间:2014-07-29 11:03:58

标签: ruby-on-rails ruby

我有一个名称间隔控制器来自我正在创建的宝石,似乎来自这些路线的*_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添加到我的控制器中时,出于某种原因,一切正常。这似乎是铁轨中的一个错误,而不是任何东西,因为我不应该这样做,但是哦。好吧。

1 个答案:

答案 0 :(得分:1)

尝试使用:

app.team_path

访问你不会正常的路径助手(比如在控制台中)。

令人费解的是,只是命名空间控制器会这样做。我会尝试在某个时候重新创建。