问题标签 [ruby-on-rails-4.2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - 在 Ruby on Rails 中对模型调用 save 并没有实际保存它
在我的控制台中,我保存这样的模型:
按预期工作。但是,在我在控制台中调用 an 后ApplicationMailer
,上述机制不再起作用:(
有任何想法吗?
ruby-on-rails-4 - 为什么 paper_trail gem 试图在 Rails 4.2/Ruby 2.2.0 中进行空插入?
我有一个最近升级到 Rails 4.2.0 和 Ruby 2.2.0 的应用程序。自升级以来,我在生产环境中看到以下异常:
Mysql2::Error: 字段 'item_type' 没有默认值:INSERT INTO
versions
VALUES ()
这似乎并非始终如一地发生。我只知道这种情况的存在是因为 ExceptionNotification 电子邮件与其他用户发生了这种情况。我多次尝试重新创建该问题,但尽管执行了发生这种情况的相同代码,但它从未发生在我身上。
另外我想提一下,在所有调用 has_paper_trail 的模型中,我没有传递任何选项,因此对跟踪的属性没有限制。似乎如果正在插入一个版本,它应该总是有某种变化。
在我们从 Rails 3.2.11 和 Ruby 1.9.3 升级到 Rails 4.2.0 和 Ruby 2.2.0 之前,这种情况从未发生过。
我只是检查了 GitHub,根据 Gemfile.lock 看起来我们从 paper_trail 2.7.2 到 3.0.6。
是什么导致这种情况发生,如何解决?
ruby-on-rails - Rails 4.2 关注测试环境中忽略的内容
我陷入了一个非常奇怪的问题。我最近从 rails 4.1 更新到 4.2。在 4.1 中一切正常。但是现在,在 4.2 中,模型关注内容似乎被忽略了,即使找到了关注点。
说得简单。我有一个Client
模型,它属于在关注点Address
中定义的Addressable
关系:
应用程序/模型/client.rb
应用程序/模型/地址.rb
应用程序/模型/关注/addressable.rb
环境没有问题development
。我可以Client.new.address
毫无问题地做。但是在test
环境中,同一行给了我一个unknow method address
错误。如果我搬到belongs_to :address
那里Client
,它会再次起作用。该模块被包含在内,因为这没有错误,如果我将名称更改为Adressabledewdewded
then,当然会出现错误。
验证方法等也会发生同样的情况。
我一直在调试这个,但我没有找到根。我已经复制了我development.rb
的 astest.rb
并重新启动了服务器,但仍然如此。我无法在全新的 Rails 4.2 应用程序中重现这一点,因此它与我的应用程序或更新过程有关,但不知道在哪里。
有人有线索吗?
谢谢
更新
Client.new.address
这是在测试环境中的控制台中执行的堆栈跟踪(在开发中它有效):
更新
两种环境中的结果Client.ancestors
是(当然,没有实例身份的唯一区别):
并且做Client.reflections.keys
使出address
现在开发中而不是在测试中。
ruby-on-rails - rails 跳过控制器/方法中的 after_action
在我的控制器中,我有一个 after_action 块。当相关方法失败时,我想停止 after_action 运行。
导轨 4.2,红宝石 2.2
有谁知道如何在rails中做到这一点?
ruby-on-rails - 在 Heroku 上为 Rails 4.2 应用程序正确配置 Postgres DB
我对如何在使用 Postgres 和 Heroku 的 Rails 4.2 应用程序中配置数据库感到困惑。
按照这个 Heroku 指南中的建议,你会得到config/database.yml
这样的:
但是当我尝试这个时,我的开发和测试环境使用与登台环境相同的数据库(注意该文件没有登台配置)。那不好。
这个Heroku guide for connection to the DB in Ruby提到任何4.2 之前database.yml
的 Rails 应用程序都会被 Heroku 覆盖它们的文件。Heroku 将解析DATABASE_URL
环境变量并创建一个新database.yml
文件。
因此,我想database.yml
对于 Heroku 上的任何环境(例如登台和生产),都可以省略配置。您的database.yml
文件本质上可能看起来像 Hound 的(注意缺少生产配置)。
但由于我们使用的是 Rails 4.2,我认为 Heroku 不会覆盖该database.yml
文件。在这种情况下,您是否必须database.yml
在 Heroku 上为我们的环境指定数据库配置?或者将它们排除在外仍然安全吗?如果我们确实需要为 Heroku 环境指定配置,那么以下内容就足够了吗?
我也对开发和测试环境的正确配置感到困惑。正如我上面提到的,显示的第一个配置具有使用 Heroku 上的暂存数据库而不是本地数据库的环境。
这个 Heroku 指南说要为您的应用程序导出DATABASE_URL
环境变量以进行连接(一旦安装了 Postgres 并且您可以连接到它)。
假设您DATABASE_URL
按照文章中的说明导出 env var,那么您的开发和测试配置必须是什么样的?我们是否使用第一个指南中所示的配置,例如
或者我们是否使用本 Heroku 指南中所示的配置(使用host
and username
)
更新1:这就是我现在所知道的。config/database.yml
如果您部署到 Heroku,无论您的 Rails 版本如何,都不需要登台和生产配置。在 4.2 之前,Heroku 会database.yml
根据DATABASE_URL
环境变量的值生成它自己的文件,覆盖你的配置文件(如果它存在的话)。从 Rails 4.2 开始,您的应用程序将DATABASE_URL
直接使用环境变量(绕过database.yml
文件),因此 Heroku 不需要(也不会)生成配置文件。
我还弄清楚了为什么我的开发和测试环境使用 Heroku 应用程序中的远程暂存数据库,而不是在其database.yml
配置中指定的本地数据库。这是因为我的本地.env
开发文件基于我的暂存.env
文件,其中包含用于连接到数据库的环境变量,例如DATABASE_URL
. 因为DATABASE_URL
存在于我的开发.env
文件中,所以我的 Rails 4.2 应用程序正在使用它并因此连接到暂存数据库。为了修复它,我从开发.env
文件中删除了这些环境变量,并使用bundle exec rake db:setup
.
更新 2: Rails 指南的这一部分更详细地介绍了如何配置数据库,值得一读: http: //guides.rubyonrails.org/configuring.html#configuring-a-database
javascript - Gmaps4Rails build_markers 在 javascript 中不起作用
我正在尝试使用 build_markers 构建标记 Json。当我在页面中显示它时,它似乎正确地构建了哈希,但在 JavaScript 中它以某种方式返回 null。
javascript(如果重要,不使用 require 树)
控制器
检查源时,它只显示 handler.addMarkers(null)
ruby-on-rails-4 - Rails 4.2未定义方法`original_filename'
我有一个带有文件附件字段的联系表单,在 Rails 4.0.5 上运行良好,但在 Rails 4.2 上给我上述错误。
我的目标是允许客户通过表单上传图像,并将图像附加到发送给网站管理员的管理员。我正在使用回形针来管理上传。
看法
梅勒
控制器
模型
回形针.rb
堆栈跟踪windows - Heroku 运行 rake db:迁移?
你能告诉我这是什么意思吗:
这是正常工作应用程序的正常输出吗?
谢谢
ruby-on-rails - Rails 4.2 - 如何建立一个has_many,通过:与collection_select的关联
我目前正在使用带有这些模型的 Rails 4.2:
这是一个简单的多对多关系,其中一个用户可以“拥有”许多配件,而一个配件可以被多个用户“拥有”。
我通过以下方式设置了我的路线:
这样,用户可以转到他们的“附件”路径 ( /users/1/accessories
) 以查看他们的附件列表,以及将新的附件关联添加到他们的帐户。
这是为附件路径呈现的视图:
这只是呈现当前配件的表格,然后构建一个 collection_select 框,您可以在其中选择要添加的多个配件。我通过删除 Bootstrap 样式简化了这一点。
最后,这里是相关的控制器动作:
现在的问题:
当我已经在数据库中手动输入了一个值时提交表单实际上只是删除了所有当前存储的值而不添加任何新值:
/li>提交未选择任何内容的表单时,出现以下错误:
/li>
ruby-on-rails - Rails 4.2:通过关系更新关系……
我有以下型号:
当我在笔记中添加附件时,我是通过部件来完成的
我觉得奇怪的是:
为什么第一次调用返回 false?因为在我看来我需要这个,所以我只能调用@part.note.reload,但我不明白发生了什么。
谢谢