小编Joh*_*non的帖子

Rails 3.2引擎布局

在使用可安装引擎时,我很难理解Rails 3.2如何应用布局.

场景:我正在构建一个引擎,它本身具有仪表板视图和各种管理功能的管理视图.我希望仪表板的布局可以被基础应用程序覆盖(如果用户需要),但管理员应该始终使用自己的布局.

这就是我在引擎内部的所有内容;

application_controller.rb

module Myengine
  class ApplicationController < ActionController::Base
Run Code Online (Sandbox Code Playgroud)

管理员/ dashboard_controller.rb

module Myengine                                                                                                          
  class Admin::DashboardController < ApplicationController
Run Code Online (Sandbox Code Playgroud)

现在我有我的引擎application.html.erb应用一个可怕的红色背景,而基本应用程序application.html.erb使用一个愉快的黄色背景,所以我可以区分正在应用的应用程序布局.

在这种情况下,如果我首先访问基本应用程序,我会看到我的黄色背景(来自基础应用程序),如果我同时转到引擎和引擎管理路径,黄色背景仍然存在.

如果我重新启动服务器并首先访问引擎,那么我会看到引擎和引擎管理路径的红色背景,而基本应用程序显示黄色背景.

如果我修改我的admin/dashboard_controller.rb如下;

module Myengine
  class Admin::DashboardController < ApplicationController
    layout 'myengine/application'
Run Code Online (Sandbox Code Playgroud)

我希望它只适用于引擎/管理员控制器 - 但是如果我重新启动服务器并访问引擎/管理路径,我会看到红色背景,而引擎的根视图使用基本应用程序黄色布局.

如果我再次重新启动服务器并访问已安装引擎的根目录,我将获得应用的红色背景,该背景也会保留在引擎管理路径上.

Aaaaarggggghhhhh!

根据首先访问应用程序的路径,预期行为是否使用不同的应用程序布局?当然不是?? 我一定做错了什么!

ruby-on-rails rails-engines ruby-on-rails-3

18
推荐指数
1
解决办法
3892
查看次数

选择每个不同外键值的最新行

原谅标题,我无法想出一些简短的事情......

我有一个表'更新'与三列,text,typeid,created - text是一个文本字段,typeid是来自'type'表的外键,并创建了一个时间戳.用户正在输入更新并选择它对应的"类型".

有一个对应的'type'表,列'id'和'name'.

我试图得到一个结果集,其中包含'type'表中的行数,以及来自updates.text的最新值,用于类型中的特定行.因此,如果我有3种类型,将返回3行,每种类型一行,以及相关类型的最新updates.text值.

有任何想法吗?

谢谢,

约翰.

sql sql-server-2005 greatest-n-per-group

7
推荐指数
1
解决办法
6613
查看次数

测试整个Rspec套件失败

我有一个奇怪的情况,如果我运行一个单独的rspec模型spec文件,所有示例都是绿色的,如果我测试我的整个spec/models文件夹,我的所有示例都是绿色的.如果我测试控制器,它们都会通过绿色.如果我测试整个套件(通过rspec规范)然后我会失败 - 如果我完全删除控制器测试,一切都是绿色的.现在我期待这完全是自己造成的,但我无法理解.

我已经将其缩小到控制器测试中的特定示例 - 这导致模型规范中的示例失败.

例如.如果存在此行,则在notes_controller_spec.rb中

 Note.any_instance.stubs(:valid?).returns(false)
Run Code Online (Sandbox Code Playgroud)

它导致我的models/account_spec.rb失败

Failure/Error: @account.all_notes.should have(2).notes
ArgumentError:
comparison of Note with Note failed
./app/models/account.rb:293:in `sort'
Run Code Online (Sandbox Code Playgroud)

第293行;

 (self.notes + self.transactions.map(&:notes).flatten).sort {|a,b| a.created_at <=> b.created_at }
Run Code Online (Sandbox Code Playgroud)

我很确定这将成为那些面对掌心的时刻之一,所以要对我温柔!

rspec rspec2 ruby-on-rails-3

6
推荐指数
1
解决办法
1516
查看次数

渴望加载协会但限制回报

这似乎是一个简单的查询,但我无法指出它.

基本上它归结为具有帖子的类别的古老概念.预期的关联到位,一个类别具有多个帖子,而一个帖子属于一个类别.

我想用他们的帖子检索所有类别,但是将帖子数限制为10.

有任何想法吗?

activerecord ruby-on-rails ruby-on-rails-3.1

5
推荐指数
1
解决办法
763
查看次数

从ActiveRecord模型中删除属性

我正在两个activerecord连接之间迁移数据,我已经正确设置了我的模型所以我可以从Legacy :: Tablename和Tablename读取并将其插入到新表中.

我遇到的问题是我的新模型没有遗留模型中的所有属性,因此当我尝试在新模型中创建记录时,我得到一个"未知属性";

legacy_users = Legacy::User.all
legacy_users.each do |legacy_user|
  User.create legacy_user.attributes
end
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试删除有问题的属性,它仍然无法正常工作,例如.

legacy_user.attributes.delete 'some_attribute'
Run Code Online (Sandbox Code Playgroud)

谁能提供任何指针?

ruby ruby-on-rails

4
推荐指数
1
解决办法
8508
查看次数

Heroku,插件无法识别经过验证的帐户

我已通过输入结算信息在Heroku中验证了我的帐户.当我访问http://heroku.com/confirm时,它会告诉我"您的帐户已经过验证".

但是,当我运行一个命令来添加一个附加组件时heroku addons:add custom_domains,我得到了这个错误:

-----> Adding custom_domains to uplate... failed
 !     Please verify your account to install this add-on
 !     For more information, see http://devcenter.heroku.com/categories/billing
 !     Confirm now at https://heroku.com/confirm
Run Code Online (Sandbox Code Playgroud)

此外,当我点击网站上的任何"验证"链接时(例如在附加页面上),我只是被重定向到我所在的同一页面,但它一直告诉我要验证.

我错过了什么吗?这是我在Heroku的第一个应用程序,所以我仍然有点困惑.

heroku

4
推荐指数
1
解决办法
7636
查看次数

查找返回相同金额且大于和小于(> <)的所有旧记录

我正在尝试在heroku上找到(然后删除)我的数据库中的所有旧记录.

出于某种原因,这两个是相同的(注意<和>)

Post.find(:all, "updated_at > ?", 30.days.ago).count
Post.find(:all, "updated_at < ?", 30.days.ago).count
Run Code Online (Sandbox Code Playgroud)

让我对使用删除有所了解.

我应该做些什么来确保我只获得旧记录?

ruby database ruby-on-rails heroku

4
推荐指数
2
解决办法
5051
查看次数

更改Carrierwave上传路径以适应Cloud 66的配置

使用Cloud 66部署rails应用程序到digitalocean.com.除了尝试上传图像时的一些权限错误外,一切正常.

 Errno::EACCES (Permission denied - /var/deploy/anabol/web_head/releases/20130608104347/public/uploads/tmp): 
Run Code Online (Sandbox Code Playgroud)

image_uploader.rb

class ImageUploader < CarrierWave::Uploader::Base
...
  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end
...
end
Run Code Online (Sandbox Code Playgroud)

有一个描述,如何解决这里的问题:https: //www.cloud66.com/help/permission_denied_errors

我将store_dir路径更改为:

  def store_dir
    "#{Rails.root}/tmp/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end
Run Code Online (Sandbox Code Playgroud)

但它没有帮助.我仍然收到此错误:

 » 13:49:25.696 Errno::EACCES (Permission denied - /var/deploy/anabol/web_head/releases/20130608114659/public/uploads/tmp): 
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?

编辑:

上传适用于image_uploader.rb中的此部分:

  def cache_dir
    # should return path to cache dir
    Rails.root.join 'tmp/uploads/cache'
  end

  def store_dir
    "#{Rails.root}/tmp/uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end
Run Code Online (Sandbox Code Playgroud)

但现在我得到:

ActionController::RoutingError (No route matches [GET] "/var/deploy/anabol/web_head/releases/20130608164223/tmp/uploads/profile/image/3/thumb_Screenshot_from_2013-06-05_17_27_54.png"):
Run Code Online (Sandbox Code Playgroud)

在视图上,仅显示图像路径.

ruby deployment ruby-on-rails carrierwave cloud66

3
推荐指数
1
解决办法
1741
查看次数