Tag: ruby on rails 3.2

如何调试由工头启动的rails(3.2)应用程序?

我正在尝试使用工头来启动我的rails应用程序。 不幸的是我连接IDE进行调试时遇到了困难。 我在这里阅读有关使用 Debugger.wait_connection = true Debugger.start_remote 启动一个远程调试会话,但这并没有真正解决。 问题:有没有办法调试由工头启动的rails(3.2)应用程序? 如果是这样,那么方法是什么?

Rails控制台’y’帮助器返回NameError而不是yaml格式化输出

我正在尝试在Rails 3.2.6 / Ruby 1.9.3控制台中使用y object为ActiveRecord对象获取格式良好的yaml输出,但由于某种原因它不适合我。 我过去曾经用过它,但是在它破坏的某个地方。 我尝试时得到以下输出: NameError: undefined local variable or method `yaml’ for main:Object

Mongoid Group By或MongoDb group by in rails

我有一个mongo表,有如下统计数据…. COURSE_ID 状态which is a string, played or completed 和使用Mongoid的时间戳function的时间戳信息 所以我的class级如下…… class Statistic include Mongoid::Document include Mongoid::Timestamps include Mongoid::Paranoia field :course_id, type: Integer field :status, type: String # currently this is either play or complete 我想每天获得一个课程总数的数量。 所以例如… 8/1/12有2个剧本,8/2/12有6个剧本。 等等。因此我将使用created_at时间戳字段,使用course_id和action。 问题是我没有看到Mongoid中的group by方法。 我相信mongodb现在有一个,但我不确定如何在rails 3中完成。 我可以使用每一个来遍历表格,并在轨道中加入一些地图或散列,但是如果课程有100万个视图,那么检索和迭代超过一百万个记录会很麻烦。 有干净的方法吗?

Rails 3.2 undefined方法`key?’ 为零:NilClass

出于某种原因,我在切换到Rails 3.2后开始出现此错误。 我想这与acl9插件有关,我尝试重新安装,但没有任何改变。 我将插件移动到lib / plugins并将初始化程序添加到配置/初始化程序,但同样的错误。 我在Github的acl9 repo上寻找解决方案,但在那里找不到任何东西。 也许它毕竟不是acl9。 我安装了paperclip,acl9,authlogic。 NoMethodError (undefined method `key?’ for nil:NilClass): actionpack (3.2.1) lib/action_controller/metal/hide_actions.rb:36:in `visible_action?’ actionpack (3.2.1) lib/action_controller/metal/hide_actions.rb:18:in `method_for_action’ actionpack (3.2.1) lib/action_controller/metal/implicit_render.rb:14:in `method_for_action’ actionpack (3.2.1) lib/action_controller/metal/compatibility.rb:61:in `method_for_action’ actionpack (3.2.1) lib/abstract_controller/base.rb:115:in `process’ actionpack (3.2.1) lib/abstract_controller/rendering.rb:45:in `process’ actionpack (3.2.1) lib/action_controller/metal.rb:203:in `dispatch’ actionpack (3.2.1) lib/action_controller/metal/rack_delegation.rb:14:in `dispatch’ actionpack (3.2.1) lib/action_controller/metal.rb:246:in `block in action’ actionpack […]

使用Devise和Omniauth编辑用户

我正在通过Railscast实施Devise和OmniAuth(以及Devise 文档 ) – 目前,我有一个网站,访问者可以使用他们的Facebook帐户或填写表格进行注册。 但是,当通过OmniAuth注册的用户尝试编辑他们的个人资料时,我遇到了麻烦。 当用户提交对其个人资料的更改时,Devise会查找用户的当前密码,但是那些使用facebook登录的用户不知道他们的密码(他们是在用户模型中自动设置的): def self.find_for_facebook_oauth(auth, signed_in_resource=nil) user = User.where(:provider => auth.provider, :uid => auth.uid).first unless user user = User.create(first_name:auth.extra.raw_info.first_name, last_name:auth.extra.raw_info.last_name, provider:auth.provider, uid:auth.uid, email:auth.info.email, password:Devise.friendly_token[0,20] ) end user end 当用户编辑他的信息时,如果他通过OmniAuth设置了他的帐户,则该应用程序不应要求密码确认。 教程建议方便的password_required? 方法将帮助我实现这一结果。 具体来说,将此方法添加到用户模型意味着它应该仅在用户未通过OmniAuth注册时返回true(在这种情况下提供者属性将为nil): def password_required? super && provider.blank? end 因此,一段代码如: resource_name, :url => registration_path(resource_name), :html => { :method => :put }) do […]

加载会话的力度如何?

我正在开发一个需要使用会话ID信息的应用程序。 我的会话存储在cookie中。 我遇到的问题是,当用户第一次访问该站点时,我的会话无法立即供控制器使用。 我想我可能会遗漏一些关于如何在Rails中初始化会话的内容。 但我认为会话未加载的事实因为这是session.inspect的输出: # 以下是如何使用Rails 3.2.11和ruby 1.9.3重现问题: 使用test控制器创建新应用程序: rails new my_app cd my_app/ rails g controller test rm app/assets/javascripts/test.js.coffee touch app/views/test/index.html.erb 尝试获取该控制器中的会话ID: class TestController < ApplicationController def index puts session[:session_id] puts session.inspect end end 添加所需的路线: MyApp::Application.routes.draw do resources :test end 然后访问应用程序并查看它的作用: rails server 得到: http://localhost:3000/test 这是控制台中的输出: # 然后再次http://localhost:3000/test ,这次我们有一个会话: 400706c0b3d95a5a1e56521e455075ac {“session_id”=>”400706c0b3d95a5a1e56521e455075ac”, “_csrf_token”=>”Euaign8Ptpj/o/8/ucBFMgxGtiH7goKxkxeGctumyGQ=”}

类别和子类别模型轨道

如果不使用任何gem,我如何在rails中执行此操作? 主要类别 子类别 子类别 子类别 主要类别 子类别 子类别 子类别 主要类别 子类别 子类别 子类别 我有一个由|组成的表 id | level1 | level2 | 1级是主要类别,2级是子类别 我想在上面的视图中显示它。 在互联网上四处看看之后,每个人似乎都建议使用类似行为的gem,但我想避免使用它们,因为我对rails很新,我想了解如何做事而不是转向gem。 你的帮助很大 模型: class Category “Category”, :foreign_key => “parent_id”, :dependent => :destroy belongs_to :parent_category, :class_name => “Category” end 控制器: class CataloguesController < ApplicationController layout 'main' def index @cats = Catalogue.all end def categories […]

Rails路由基于条件

我有三个角色:Instuctor,Student,Admin,每个角色都有一个带有“home”视图的控制器。 所以这很好, get “instructor/home”, :to => “instructor#home” get “student/home”, :to => “student#home” get “admin/home”, :to => “admin#home” 我想写一个类似于下面的虚荣url,它会根据user_id的角色路由到正确的主页。 get “/:user_id/home”, :to => “instructor#home” or “student#home” or “admin#home” 我该如何做到这一点?

Rails数据库默认值和布尔字段的模型validation

在Rails模型中,我有一个属性is_subscriber ,当我构建一个db迁移以将此列添加到数据库时,我将默认值指定为false: t.boolean “is_subscriber”, :default => false 我还在模型中指定需要存在此属性: validates :is_subscriber, presence: true 那么为什么在创建模型实例时却没有指定此属性会出现此错误? 2012-05-08T21:05:54+00:00 app[web.1]: ActiveRecord::RecordInvalid (Validation failed: Is subscriber can’t be blank):

为什么Rails演示应用程序提供“未初始化的常量ExecJS :: RubyRacerRuntime :: Context :: V8”?

作为Rails的新手,我正在尝试启动并运行一个基本的“hello world”应用程序。 特别是Agile Web Development with Rails第2章中的应用程序。 加载hello world页面会导致标题中给出错误。 到目前为止,我已经完成了以下工作: rails new demo cd demo 在ExecJS抱怨没有可用的JavaScript运行时之后,向Gemfile添加了gem ‘therubyracer’ 。 bundle install rake about # (see below) rails generate controller Say hello goodbye rails server 此时WEBrick启动并加载http://localhost:3000/say/hello 。 WEBrick记录以下错误(也出现在浏览器中): Started GET “/say/hello” for 127.0.0.1 at 2012-10-26 11:45:10 -0400 Connecting to database specified by database.yml Processing by SayController#hello as […]