在使用可安装引擎时,我很难理解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!
根据首先访问应用程序的路径,预期行为是否使用不同的应用程序布局?当然不是?? 我一定做错了什么!
原谅标题,我无法想出一些简短的事情......
我有一个表'更新'与三列,text,typeid,created - text是一个文本字段,typeid是来自'type'表的外键,并创建了一个时间戳.用户正在输入更新并选择它对应的"类型".
有一个对应的'type'表,列'id'和'name'.
我试图得到一个结果集,其中包含'type'表中的行数,以及来自updates.text的最新值,用于类型中的特定行.因此,如果我有3种类型,将返回3行,每种类型一行,以及相关类型的最新updates.text值.
有任何想法吗?
谢谢,
约翰.
我有一个奇怪的情况,如果我运行一个单独的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)
我很确定这将成为那些面对掌心的时刻之一,所以要对我温柔!
这似乎是一个简单的查询,但我无法指出它.
基本上它归结为具有帖子的类别的古老概念.预期的关联到位,一个类别具有多个帖子,而一个帖子属于一个类别.
我想用他们的帖子检索所有类别,但是将帖子数限制为10.
有任何想法吗?
我正在两个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)
谁能提供任何指针?
我已通过输入结算信息在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上找到(然后删除)我的数据库中的所有旧记录.
出于某种原因,这两个是相同的(注意<和>)
Post.find(:all, "updated_at > ?", 30.days.ago).count
Post.find(:all, "updated_at < ?", 30.days.ago).count
Run Code Online (Sandbox Code Playgroud)
让我对使用删除有所了解.
我应该做些什么来确保我只获得旧记录?
使用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 ×3
heroku ×2
activerecord ×1
carrierwave ×1
cloud66 ×1
database ×1
deployment ×1
rspec ×1
rspec2 ×1
sql ×1