我将在明年初(2010年)开始使用Rails开展一个大型新项目.有人可以给我建议我应该使用哪个版本的Rails以及为什么?
是否有一个简单的HTTP服务器可以在当前的PHP项目路径中运行,如Rails的脚本/服务器(webrick)?
我想从模型中提取颜色列表并将颜色选择列表放入视图中。选项具有颜色代码的价值。我想将选项的背景颜色更改为其值。以下是我尝试做的两种方法,但结果是它会改变整个选择列表的颜色,但不会改变具有单个颜色的单个选项的颜色。
<p>
<b>Background color</b><br />
collection_select(:setting, :bg_color, @colors, :code, :name,
options ={:prompt => "-Select a color"}, html_options = {:style => "background-color: #3f3"})
</p>
<p>
<b>New Background color</b><br />
select_tag("setting[bg_color]", "<option>-Select a color</option>" +
options_from_collection_for_select(@colors, :code, :name, html_options = {:style => "background-color: #3f3"}))
</p>
Run Code Online (Sandbox Code Playgroud)
我希望它生成类似以下内容的内容:
<option value='color_code' style='background-color: color_code' >color_name</option>
Run Code Online (Sandbox Code Playgroud)
这样,选项中的颜色对用户也是可见的。
无论如何,我们可以自定义选项吗?
提前致谢。
这是我的第一次部署.我做了一个deploy:setup很好的上限.
然后,当我尝试执行时,cap deploy:update我遇到错误消息.有点像
rm: cannot remove `/var/www/app_name/current': Is a directory
Run Code Online (Sandbox Code Playgroud)
这是我的capfile和目录权限.
一般而言,就部署用户和权限而言,最佳做法是什么?我应该使用root还是创建不同的用户.如果不同的用户需要具备哪些确切权限?
谢谢
我是Ruby on Rails的新手.我使用http://railsinstaller.org/中的安装程序在Windows 7上的rails上安装了ruby .我可以创建一个项目,然后我不是(我不知道我做了什么:-().
完整的错误消息是: -
在创建新项目时: -
c:\Sites>rails new Tickets_Test
E:/Ashish/Ruby192/lib/ruby/1.9.1/rubygems.rb:762:in `report_activate_error': Cou
ld not find RubyGem rails (>= 0) (Gem::LoadError)
from E:/Ashish/Ruby192/lib/ruby/1.9.1/rubygems.rb:219:in `activate'
from E:/Ashish/Ruby192/lib/ruby/1.9.1/rubygems.rb:1065:in `gem'
from E:/Ashish/RailsInstaller/Ruby1.8.7/bin/rails:18:in `<main>'
Run Code Online (Sandbox Code Playgroud)
刚刚获得版本: -
c:\Sites>rails --version
E:/Ashish/Ruby192/lib/ruby/1.9.1/rubygems.rb:762:in `report_activate_error': Cou
ld not find RubyGem rails (>= 0) (Gem::LoadError)
from E:/Ashish/Ruby192/lib/ruby/1.9.1/rubygems.rb:219:in `activate'
from E:/Ashish/Ruby192/lib/ruby/1.9.1/rubygems.rb:1065:in `gem'
from E:/Ashish/RailsInstaller/Ruby1.8.7/bin/rails:18:in `<main>'
Run Code Online (Sandbox Code Playgroud)
知道为什么会发生这种情况吗?
编辑
显然有两个命令提示: - Ruby命令提示符: -
和Ruby for rails命令提示符(使用此命令提示符解决问题): -

我正在使用ruby命令提示符.听起来像是一个愚蠢的问题,但是,我不确定是否有"两个"命令提示?
我是Rails的新手,我正在尝试部署我的第一个项目.我正在使用rails 3,ruby 1.8.7,Passanger,Mysql和Git
我按照很多教程来学习使用capistrano进行部署,并且有一个我无法弄清楚的问题.在教程中他们从不谈论schema.rb如果这个文件负责我已经完成的迁移以及我们部署应用程序时,capistrano将所有文件复制到"当前"文件夹(schema.rb to),它怎么能在生产服务器上进行正确的迁移.我应该告诉capistrano为"current"文件夹制作一个simlink到正确的schema.rb文件吗?如果是的话我该怎么做?TNKS.
我使用rvm ruby1.9.2p0和rails 3.0.1在我的机器上创建了一个新应用程序,并执行了以下操作:
rails new -J -d mysql appname
git init
git add .
git commit
heroku create
Run Code Online (Sandbox Code Playgroud)
并创建了应用程序.但当我这样做时:
heroku rake db:create --trace
Run Code Online (Sandbox Code Playgroud)
我明白了:
Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
Couldn't create database for {"reconnect"=>false, "encoding"=>"utf8", "username"=>"root", "adapter"=>"mysql2", "database"=>"app_production", "pool"=>5, "password"=>nil, "socket"=>"/var/run/mysqld/mysqld.sock"}, charset: utf8, collation: utf8_unicode_ci
(in /app)
** Invoke db:create (first_time)
** Invoke db:load_config (first_time)
** Invoke rails_env (first_time)
** Execute rails_env
** Execute db:load_config
** Execute db:create
Run Code Online (Sandbox Code Playgroud)
当我这样做:heroku rake db:migrate --trace,然后跟踪有如下行:
/app/.bundle/gems/ruby/1.8/gems/rake-0.8.7/lib/rake.rb:590:in
Run Code Online (Sandbox Code Playgroud)
这表明它使用的是红宝石1.8而不是红宝石1.9.2
如何在我的heroku应用程序上创建数据库并使其使用ruby …
我有一个布尔表达式的问题,当我做了一个logger.debug我得到了奇怪的结果,所以我将我的日志代码简化为以下内容,并且惊讶地看不到任何'false'被打印.
在我的控制器中记录代码:
logger.debug 'true'
logger.debug true
logger.debug
logger.debug 'false'
logger.debug false
logger.debug
logger.debug '1 == 1'
logger.debug 1 == 1
logger.debug
logger.debug '1 == 0'
logger.debug 1 == 0
Run Code Online (Sandbox Code Playgroud)
其中打印出以下内容
true
true
false
1 == 1
true
1 == 0
Run Code Online (Sandbox Code Playgroud)
......?我希望看到错误.当我在控制台中运行'1 == 0'或'put false'时,我得到了错误.我错过了什么吗?
任何想法为什么不打印'假'?
ruby版本:1.8.7-p352
rails版本:2.3.2
我想使用find_by_sql方法代替活动记录查询接口,因为我在编写自己的SQL时具有灵活性.
例如,
在SQL中,将查询中的表从最小到最大排序,这被认为是一种很好的做法.使用活动记录查询界面时,您必须从可能是最大表的结果模型开始.
我还可以通过在连接本身中包含目标表并包含多个表中所需的列来轻松避免N + 1问题.
我想知道是否有理由我不应该使用find_by_sql选项,特别是当我将编写ANSI SQL时,它应该与所有(如果不是大多数)数据库兼容.
谢谢!
我有一个排序数组(唯一值,不重复).
我知道我可以使用Array#binarysearch但它用于查找值而不是删除它们.我也可以删除O(log n)的值吗?怎么样?
让我们说我有这个数组:
arr = [-3, 4, 7, 12, 15, 20] #very long array
Run Code Online (Sandbox Code Playgroud)
我想删除值7.到目前为止,我有这个:
arr.delete(7) #I'm quite sure it's O(n)
Run Code Online (Sandbox Code Playgroud)
假设Array#delete-at在O(1)处工作.我能做到arr.delete_at(value_index)
现在我只需要获取值的索引.二进制搜索可以做到这一点,因为数组已经排序.但是利用排序属性(我所知道的)的唯一方法是返回值的二进制搜索,而不是删除或返回索引.
把它们加起来:
1)如何在O(log n)处从已排序的非重复数组中删除值?
要么
2)假设数组#lele-at在O(1)处工作(是吗?),如何在O(log n)处获取值的索引?(我的意思是数组已经排序了,我必须自己实现吗?)
谢谢.