Tag: ruby on rails 3.1

使用关联rails找到最大值的正确方法

我有以下型号: #equipment.rb class Equipment < ActiveRecord::Base belongs_to :odometer_type has_many :odometers end #odometer.rb class Odometer equipment.id).max(:mileage) end end 在视图中看起来更糟糕,如下所示: = @equipment.odometers.current_reading(@equipment) 我认为应该有更好的方法来做到这一点,但我似乎无法提出或找到任何东西。 老实说,我甚至不确定如何搜索这样的东西。 谢谢你的帮助。

jQuery-File-Upload内容类型/扩展validation

我正在使用带有rails 3的jQuery-File-Upload,它运行得很好。 但我没有找到任何关于如何在客户端validation上传文件的扩展名或内容类型的内容。 有没有办法做到这一点? 因为我无论如何都会通过Paperclip在server-sidvalidation它,但我认为在客户端进行一次validation会更好。

在Spree(RoR)中保存产品时价格乘以100

我在Rails 3.1.3和Ruby 1.9.3之上安装了在线购物框架Spree。 我还使用Spree_i18n gem来本地化商店。 现在,每当我保存产品时,价格都会乘以100。 例如,在管理区域中,我键入3.20的价格。 这导致值320.如果我再次保存,它将更改为32000,依此类推。 这是我的本地化de_numbers.yml供参考: — de: number: currency: format: format: “%u%n” unit: “€” precision: 2 separator: ‘.’ delimiter: ‘,’ 在我的设置中我无法想到任何exception,所以我想知道为什么这不是一个常见的问题。 任何帮助将不胜感激。

Rails中的永久变量

让我们说在我的Rails应用程序之上有一个显示文本的栏 – 最新的特价,计划的停机时间通知,类似的东西。 它是一种单一的,基本上每个请求都需要访问的一种信息,并且可能会不时更新。 实现这一目标的最佳方法是什么? 我想做的是某种永久的全局变量(可从控制器访问)。 它将很少更新,因此如果在更新后的一段时间内工作人员之间存在不一致,则没有问题。 另一方面,在服务器故障的情况下它应该是持久的(定期备份就足够了)。 它会经常被访问,所以它应该尽可能快 – 最好留在内存中。 此外,它只是一种,所以我真的不想用专用的数据库模型来膨胀应用程序。 例如,在Node.js中这样的东西很容易,但我找不到在Rails中实现这一点的单一方法。 我该怎么办? 编辑 感谢到目前为止的答案,但是虽然他们鼓舞人心,但我认为我应该强调一个他们都缺失的关键function。 该变量应该可以在app内部编辑并且持久化。 虽然可以编辑你的变量,但是在服务器重启的情况下,我又回到了默认状态 – 这很糟糕。

在SCSS Partial中使用Rails 3.1资产路径

我有以下设置: app/assets/stylesheets/application.css.scss /* *= require_self *= require fancybox */ /* COLORS.. */ /* MIXINS… */ /* FONT STACKS… */ /* IMPORTS */ @import “reset”; @import “supergrid”; @import “rails”; @import “app”; @import “forms”; @import “layout”; 在我的各个部分中,我遇到了资产路径的真正问题。 当在application.css.scss或清单加载的任何内容时,我可以使用: .example { background-image: image-path(“background.png”); } 但是,当我使用partial,例如my _layout.css.scss partial时,当我尝试相同的东西时,只能从编译文件中省略background-image属性。 似乎SCSS资产助手在部分内部不可用? 有没有人得到这个工作,我错过了一些明显的东西? 或者是不可能在部分中使用资产助手? 如果是这样,这是一个主要的主要问题,因为我的整个应用程序结构依赖于SCSS变量和部分之间共享的mixin。 我知道变量和mixin不在sprockets清单中共享,所以如果partials无法访问资产助手,那么我正在考虑必须将所有内容连接到一个scss文件中,这几乎违背了Sass和Sprockets的目的。 任何帮助将非常感谢!

为什么我应该使用bundle exec 而不是只运行命令?

它是使用bundle exec 而不仅仅是命令来运行可执行文件的众所周知的最佳实践。 但似乎没有人能解释为什么通过bundle exec运行执行程序更好。 所以我问你为什么,……?

Rails 3:仅为服务器启动执行初始化程序

我正在开发一个Rails 3.1应用程序,它需要在应用程序服务器启动时启动几个后台进程:(1)使用FSSM监视某个目录中的文件的文件系统监视进程,以及(2)Resque“worker “从Resque队列执行作业的进程。 在我最初的尝试中,我通过在config / initializers目录中的初始化程序中生成进程来完成此操作。 这个工作正常,因为进程与“rails服务器”一起正确启动和停止。 但是,问题是每当我运行“rails console”或任何Rake任务时,也会执行这些初始值设定项。 有没有办法让初始化程序只作为“rails server”命令的一部分运行,而不是在“rails console”或Rake任务期间运行? 或者,是否有更好的方法来启动不使用初始化器机制的后台进程? 我仍然希望能够通过一个命令一起启动所有内容。 谢谢!

schema.rb索引与单个迁移索引不同

我有这个用于我的迁移: class CreateCategories false end execute(‘CREATE UNIQUE INDEX ix_categories_root_title ON categories (title) WHERE parent_id IS NULL’) end def down drop_table :categories end end 但是当我偷看db / schema.rb时,我看到了这个: ActiveRecord::Schema.define(:version => 20110808161830) do create_table “categories”, :force => true do |t| t.integer “parent_id” t.string “title”, :null => false end add_index “categories”, [“title”], :name => “ix_categories_root_title”, :unique => true end […]

JS / Coffeescript中的环境变量

无论如何我可以使用Rails 3.1获得一个环境变量(如API密钥)出现在JS / Coffee中?

环境/开发资产路径的副本在gems目录中找不到jquery-ui-rails

我将config / environments / development.rb复制到config / environments / ci.rb。 当我使用RAILS_ENV = development运行时,资产搜索路径包括我的gem供应商目录,特别是jquery-ui-rails。 但是,当我使用RAILS_ENV = ci运行时,它没有。 从控制台,Rails.application.config.assets.paths通过开发评估到以下内容 irb(main):002:0> Rails.application.config.assets.paths => [“/var/www/ci/conflux/app/assets/images”, “/var/www/ci/conflux/app/assets/javascripts”, “/var/www/ci/conflux/app/assets/stylesheets”, “/var/www/ci/conflux/vendor/assets/stylesheets”, “/opt/comcast/ruby1.9.3/lib/ruby/gems/1.9.1/gems/jquery-rails-1.0.19/vendor/assets/javascripts”, “/opt/comcast/ruby1.9.3/lib/ruby/gems/1.9.1/gems/jquery-ui-rails-1.0.0/vendor/assets/images”, “/opt/comcast/ruby1.9.3/lib/ruby/gems/1.9.1/gems/jquery-ui-rails-1.0.0/vendor/assets/javascripts”, “/opt/comcast/ruby1.9.3/lib/ruby/gems/1.9.1/gems/jquery-ui-rails-1.0.0/vendor/assets/stylesheets”] 但对于ci我只得到以下内容: irb(main):002:0> Rails.application.config.assets.paths => [“/var/www/ci/conflux/app/assets/images”, “/var/www/ci/conflux/app/assets/javascripts”, “/var/www/ci/conflux/app/assets/stylesheets”, “/var/www/ci/conflux/vendor/assets/stylesheets”, “/opt/comcast/ruby1.9.3/lib/ruby/gems/1.9.1/gems/jquery-rails-1.0.19/vendor/assets/javascripts”]