首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用NameError时使用act_as_ferret

使用NameError时使用act_as_ferret
EN

Stack Overflow用户
提问于 2010-05-15 13:52:50
回答 2查看 59关注 0票数 0

当我使用

代码语言:javascript
复制
acts_as_ferret :fields =>[:competitor], :remote => true

NameError in PartController#index

未初始化常量PartController::竞争者

我的模型

代码语言:javascript
复制
class Competitor < ActiveRecord::Base
  validates_presence_of :fee_earner_id, :notes
  belongs_to :fee_earner 
  belongs_to :country 
  belongs_to :state 
  belongs_to :user
  acts_as_ferret :fields =>[:competitor], :remote => true
end  

我的控制器

代码语言:javascript
复制
class PartController < ApplicationController
  def index
    @proscribeds = Competitor.paginate(:all, 
                                       :order => sort , 
                                       :page => params[:page], 
                                       :per_page => 70 )
  end 
end

它在本地主机中运行良好,但是当我将它部署到服务器中时,我会得到这个错误。

act_as_ferret与其他型号的产品合作得很好。我不知道为什么这不适用于Competitor模型。

EN

回答 2

Stack Overflow用户

发布于 2010-05-15 23:12:46

这些似乎是简单的建议,但我想到的是:

  • 您在本地主机和服务器上有相同的操作系统吗?我已经被一些小的差异烧掉了,比如Unix和Windows如何处理混合案例pathnames.
  • Have --您所有文件的最新版本都被移动了?您能做一个区分并确保没有缺少配置文件或环境变量什么的吗?

我知道这些建议并不是真正针对Rail/Ruby的,但我发现,与实际的代码错误相比,小的配置问题更让我头疼。

祝好运!

票数 0
EN

Stack Overflow用户

发布于 2015-05-15 15:50:43

这可能是您正在运行的远程drb服务器上的bin/ferret_server文件的问题。它抱怨的是,它对PartController::Competitor模型一无所知。这是因为雪貂服务器不会像Rails一样,在默认情况下加载所有Rails类。

我也遇到了类似的问题,解决方案是还需要Rails config/environment文件和Rails config/application文件。

就像这样:

代码语言:javascript
复制
begin
  ENV['FERRET_USE_LOCAL_INDEX'] = 'true'
  if env = $ferret_server_options['environment']
    ENV['RAILS_ENV'] = env
  end

  # determine RAILS_ROOT unless already set
  root = File.expand_path(determine_rails_root)

  begin
    require File.join(root, 'config', 'application')
    # Also require environment to eager load Rails classes
    require File.join(root, 'config', 'environment')
  rescue
    puts "Error booting your rails app at #{root}: #{$!}\n#{$!.backtrace.join("\n")}"
    raise $!
  end

  puts "Rails.root: #{Rails.root}"
  puts "Rails.env: #{Rails.env}"

  require 'acts_as_ferret/server/server'
  ActsAsFerret::Server::Server.new.send($ferret_server_action)
rescue Exception => e
  $stderr.puts(e.message)
  $stderr.puts(e.backtrace.join("\n")) if $ferret_server_options['debug']
  exit(1)
end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2840350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档