Questions tagged «ruby-on-rails»

Ruby on Rails是一个用Ruby编写的开源全栈Web应用程序框架。它遵循流行的MVC框架模型,并以其“配置之上的约定”方法进行应用程序开发而闻名。


18
execJs:“找不到JavaScript运行时”,但是execjs和therubyracer位于Gemfile中
我收到此错误: 耙子流产了!找不到JavaScript运行时。参见https://github.com/sstephenson/execjs, 我已经花了更多时间搜索Google,然后我愿意承认。我相信这是execJs的错误。 从所有帖子来看,这是Rails 3.1的一个非常普遍的问题。现在,标准的宝石(例如coffee-script和sass)需要js运行时。 通过将Gems'execjs'和'therubyracer'添加到应用程序Gemfile中,然后运行'bundle update'和/或'bundle install',可以解决大多数情况。但是不适合我。 我想我很幸运。我在旧版本的Redhat Linux 4(2.6.9-101.ELsmp)上运行rails 3.1.3 / ruby​​ 1.9,gcc是3​​.4.6。 其他报告的修复程序无济于事,我无法安装'nodejs','johnson'或'mustang',而其他运行时execJs应该定位并使用。他们不会在我的系统上安装/安装。 我需要解决导致execJ找不到'therubyracer'的问题。这是Gemfile(并且安装包显示OK): source 'http://rubygems.org' gem 'rails', '3.1.3' gem 'sqlite3' gem 'sho-mongrel' gem 'execjs' gem 'therubyracer' #gem "therubyracer", :require => 'v8' group :assets do gem 'sass-rails', '~> 3.1.5' gem 'coffee-rails', '~> 3.1.1' gem 'uglifier', '>= 1.0.3' …

9
如何用另一个键替换哈希键
我有一个条件,我得到一个哈希 hash = {"_id"=>"4de7140772f8be03da000018", .....} 我希望此哈希为 hash = {"id"=>"4de7140772f8be03da000018", ......} PS:我不知道哈希中的键是什么,它们是随机的,每个键都带有“ _”前缀,我不希望有下划线


4
Rails迁移:撤消列的默认设置
我有一个问题,我在Rails中进行了迁移,该迁移为列设置了默认设置,例如以下示例: def self.up add_column :column_name, :bought_at, :datetime, :default => Time.now end 假设我想在以后的迁移中删除默认设置,那么如何使用Rails迁移来做到这一点? 我当前的解决方法是在rails迁移中执行自定义sql命令,如下所示: def self.up execute 'alter table column_name alter bought_at drop default' end 但是我不喜欢这种方法,因为我现在依赖于基础数据库如何解释该命令。在数据库更改的情况下,此查询可能不再起作用,并且迁移将中断。那么,有没有办法表达Rails中某个列的默认设置的撤消?


19
Ruby on Rails和Rake问题:未初始化的常量Rake :: DSL
我有一个非常令人沮丧的问题:Rake愚蠢。 问题出在这里: $ rails new test_app $ rails generate scaffold new_scaffold field1:string field2:text 两者都很好,但是当我这样做时, $ rake db:migrate 我收到以下错误。 (in /home/mikhail/test_app) rake aborted! uninitialized constant Rake::DSL /usr/lib/ruby/1.9.1/rake.rb:2482:in `const_missing' /usr/lib/ruby/gems/1.9.1/gems/rake-0.9.0/lib/rake/tasklib.rb:8:in `<class:TaskLib>' /usr/lib/ruby/gems/1.9.1/gems/rake-0.9.0/lib/rake/tasklib.rb:6:in `<module:Rake>' /usr/lib/ruby/gems/1.9.1/gems/rake-0.9.0/lib/rake/tasklib.rb:3:in `<top (required)>' /usr/lib/ruby/gems/1.9.1/gems/rake-0.9.0/lib/rake/rdoctask.rb:20:in `require' /usr/lib/ruby/gems/1.9.1/gems/rake-0.9.0/lib/rake/rdoctask.rb:20:in `<top (required)>' /usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/tasks/documentation.rake:1:in `require' /usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/tasks/documentation.rake:1:in `<top (required)>' /usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/tasks.rb:15:in `load' /usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/tasks.rb:15:in `block in <top …


7
如何在Ruby On Rails中重定向到上一页?
我有一个页面,列出了所有具有可排序标题和分页的项目。 path: /projects?order=asc&page=3&sort=code 我选择编辑其中一个项目 path: projects/436/edit 当我单击该页面上的“保存”时,它将调用项目控制器/更新方法。更新代码后,我想重定向到单击编辑特定项目之前的路径。换句话说,我想在同一页面上进行相同的排序。 我看到了link_to(:back)并认为:back可以在redirect_to(:back)中使用,但这是不行的。 puts YAML::dump(:back) yields the following: :back 关于如何使它起作用的任何想法。看来这个问题很容易解决,但是我对RoR还是陌生的。

5
Rails has_many具有别名
在我的用户模型中,我可以有: has_many :tasks 在我的任务模型中: belongs_to :user 然后,假设外键“ user_id”存储在任务表中,我可以使用: @user.tasks 我的问题是,如何声明has_many关系,以便可以将用户任务称为: @user.jobs ... 要么 ... @user.foobars 谢谢你

14
AWS S3:您尝试访问的存储桶必须使用指定的终结点进行寻址
我正在尝试使用AWS-SDK-Core Ruby Gem删除上传的图像文件。 我有以下代码: require 'aws-sdk-core' def pull_picture(picture) Aws.config = { :access_key_id => ENV["AWS_ACCESS_KEY_ID"], :secret_access_key => ENV["AWS_SECRET_ACCESS_KEY"], :region => 'us-west-2' } s3 = Aws::S3::Client.new test = s3.get_object( :bucket => ENV["AWS_S3_BUCKET"], :key => picture.image_url.split('/')[-2], ) end 但是,我收到以下错误: 您尝试访问的存储桶必须使用指定的端点进行寻址。请将所有将来的请求发送到该端点。 我知道该区域是正确的,因为如果将其更改为us-east-1,则会显示以下错误: 指定的密钥不存在。 我在这里做错了什么?

7
在Rails生产中config.assets.compile = true,为什么不呢?
已安装的默认Rails应用rails new已config.assets.compile = false在生产中。 通常的处理方式是rake assets:precompile在部署应用程序之前运行,以确保所有资产管道资产都已编译。 那么,如果我开始config.assets.compile = true生产该怎么办? 我precompile不再需要跑步了。我认为将会发生的是第一次请求资产时,将对其进行编译。这将是第一次降低性能(这意味着您通常需要在生产环境中使用js运行时才能做到)。但是除了这些缺点之外,在对资产进行延迟编译之后,我认为对该资产的所有后续访问都不会影响性能,该应用程序的性能将与在此初始首次命中的延迟编译之后的预编译资产完全相同。这是真的? 有什么我想念的吗?还有其他原因不适合config.assets.compile = true生产吗?如果我已经在生产环境中使用了JS运行时,并且愿意为资产的首次访问权衡性能下降的代价,而不必运行它precompile,这是否有意义?

5
在Ruby on Rails中重写setter方法的正确方法是什么?
我正在使用Ruby on Rails 3.2.2,并且我想知道以下内容是否是“正确” /“正确” /“确定”方式来覆盖我的class属性的setter方法。 attr_accessible :attribute_name def attribute_name=(value) ... # Some custom operation. self[:attribute_name] = value end 上面的代码似乎按预期工作。但是,我想知道,通过使用上面的代码,将来我是否会遇到问题,或者至少会遇到Ruby on Rails“我期望” /“可能发生”的问题。如果那不是重写setter方法的正确方法,那么正确的方法是什么? 注意:如果我使用代码 attr_accessible :attribute_name def attribute_name=(value) ... # Some custom operation. self.attribute_name = value end 我收到以下错误: SystemStackError (stack level too deep): actionpack (3.2.2) lib/action_dispatch/middleware/reloader.rb:70

16
安装libv8时出错:错误:无法构建gem本机扩展
我做了一个Rails项目, rails new test_bootstrap. 成功了。 移动到项目目录并添加了宝石 gem "therubyracer" gem "less-rails" #Sprockets (what Rails 3.1 uses for its asset pipeline) supports LESS gem "twitter-bootstrap-rails" 并运行 bundle install 在那之后,我有这个错误。 Installing libv8 (3.16.14.3) Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension. c:/RailsInstaller/Ruby1.9.3/bin/ruby.exe extconf.rb creating Makefile 지정된 경로를 찾을 수 없습니다. 지정된 경로를 찾을 …

13
在OS X上安装PG gem-无法构建本机扩展
似乎许多其他人在安装pg gem时遇到问题。为他人提出的解决方案中没有一个对我有用。 我试图安装pg gem和postgres.app。pg gem不会安装。我得到的第一个错误是: 安装pg(0.17.0)时发生错误,并且Bundler无法继续。gem install pg -v '0.17.0'捆绑前确保成功。 有关将我的gem安装指向pg的配置的安装建议失败,并显示以下错误消息(此论坛上的许多其他人都遇到过): Failed to build native extensions... Results logged to /Users/melanie/.rvm/gems/ruby-1.9.3-p448/gems/pg-0.17.0/ext/gem_make.out 我不知道如何查找或访问此日志文件以搜索更多线索。 当我尝试使用sudo apt-get install命令时,我还会收到一条错误消息(找不到命令)。在过去的6个小时中,我一直在这个论坛上进行搜索,尝试每条建议以使pg与我的rails项目一起工作。 我找不到有关如何更改路径的建议,或者确切地说,需要进行哪些更改。我which pg_config返回一个文件源。我已将其与使用该配置安装pg的命令一起使用。它失败。 有太多人对此感到困扰。许多答案表明自制。我不得不删除它,因为它引发了其他问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.