问题标签 [railstutorial.org]

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.

0 投票
2 回答
531 浏览

ruby-on-rails - 从 Prototype 更改为 JQuery 会导致双重 POST

在 Michael Hartl 编写的Ruby on Rails 教程的第 12 章中,用户的个人资料页面上有一个按钮,您可以翻转以关注或取消关注他/她。(见图 12.12 和 12.13)

我正在使用 rvm 1.8.6 和 Rails 3.1.1。

当我使用 Prototype 时,单击按钮的行为可以正常工作。在 /sample_app/app/views/layouts/application.html.erb 中,

单击“关注”时,它会先 POST 然后 GET 以重新呈现页面。日志如下。

但是,在我按照第 13 章切换到 JQuery 后,单击关注按钮的行为导致异常并导致 Web 服务器崩溃。在我将 /sample_app/app/views/layouts/application.html.erb 修改为之后,

它会改为 POST 两次。而且我猜 db 唯一违规使 Ruby 崩溃了。日志如下。

有人可以帮忙吗?

代码如下。应用程序/视图/用户/_follow_form.html.erb

应用程序/视图/用户/_follow.html.erb

app/views/users/_unfollow.html.erb

应用程序/控制器/relationships_controller.rb

app/views/relationships/create.js.erb

应用程序/视图/关系/destroy.js.erb

0 投票
1 回答
165 浏览

ruby-on-rails - Rails 教程第 12 章练习 1 - 取出 :dependent => :destroy 后无法让测试失败

对于第 12 章的练习 1,我无法弄清楚为什么当我从 User 模型中取出 :dependent => :destroy 时我的测试没有失败

我的测试

我的模型,没有 :dependent => :destroy

仍然导致所有测试通过

0 投票
1 回答
389 浏览

ruby - RSpec 测试创建,Hartl 的教程 => RoR 3.1。CH10:从 users_controller_spec 调用 test_sign_in 或 post :create, :session => @attr

我正在尝试浏览Hartl 的 Ruby on Rails 教程,同时通过学习 railscasts 和 stackoverflow 帖子将他的示例升级到 Rails 3.1,因为我喜欢以艰难的方式学习东西。我的版本包括has_secure_password.

不幸的是,我遇到了一个障碍。出于某种原因,我无法test_sign_in (@user)users_controller_spec.rb. 我可以通过作弊和使用来让测试通过,post :create, :user => @attr因为这种方法也会调用sign_in. 此外,我相当肯定这主要是与 RSpec 相关的问题,因为在浏览器中尝试场景时,所有失败的测试实际上都有效。

测试似乎确实调用post :create, :session => @attr但无法实际登录。我认为这可能与我的工厂有关;但我不认为这有什么问题。在尝试了几个小时后,我放弃了希望并转向你们。如果你能帮助我,那就太好了!

users_controller_spec.rb 中的测试失败

session_controller.rb 创建方法

注意:我意识到我在这里没有坚持 DRY,不幸的是我还不知道如何将参数传递给 sign_in 方法:(

session_helper.rb 登录方法

如果我没记错的话,这就是这个“错误”所涉及的所有代码。显然我可以发布更多代码,但这可能无济于事。如果这个假设是错误的,请告诉我,我会发布任何必要的内容。

0 投票
2 回答
1392 浏览

ruby-on-rails - 在 ROR 教程中,rails 找不到 CSS 文件(custom.css 和蓝图)或 logo.png

在教程的第 5.1 节中,Rails 似乎找不到 CSS 文件(custom.css 或蓝图文件)或 logo.png。我已经对代码进行了三次检查,它与 git 存储库中的相同。

我还阅读了资产管道指南,所有默认值都是正确的。

我 100% 确定它与资产管道有关,但我似乎无法弄清楚。

在此先感谢您的帮助。

这是我的公共目录的列表:

以下是我得到的错误:

0 投票
2 回答
1043 浏览

ruby-on-rails-3.1 - 使用secure_password从用户模型中验证缺失的方法

使用 Rails 3.1.3。我正在使用 railscast 270 中提供的密码验证方法来调用“has_secure_password”:

除了一个非常令人费解的问题外,它有效。文档说明使用

user.authenticate("不正确")

但是我看不到在哪里声明了 authenticate 方法。我查看了secure_password,一个看似等效的方法是:

请注意,我正在尝试从 railstutorial.org 转换示例(真的很棒),所以我必须更改很多内容,并且我的应用程序中可能存在冲突的内容。例如,我以前有这行:

这阻止了在 secure_password 中调用 password= 的声明,导致 password_digest 的 db 列为零。删除此行解决了此问题。

更新:我用 3.1.3 创建了一个全新的 rails 应用程序,并确认运行这两个命令的最简单情况会导致错误:

u = User.create(:username => "a", :password => "foobar", :password_confirmation => "foobar") (0.1ms) BEGIN SQL (0.2ms) INSERT INTO users( created_at, password_digest, updated_at, username) VALUES (' 2011-12-21 05:18:17', '$2a$10$BbwHbq1bGwvQRgE0xK28VeP8K/lwY.VfLaLsMSs6ogNa1DucephnK', '2011-12-21 05:18:17', 'a') (42.6ms) 提交

u.authenticate("foobar") u.authenticate("foobar") NoMethodError: undefined method authenticate' for #<User:0xa26e4cc> from /home/justin/.rvm/gems/ruby-1.9.3-p0@testapp/gems/activemodel-3.1.3/lib/active_model/attribute_methods.rb:385:inmethod_missing' from /home/justin/.rvm/gems/ruby-1.9.3-p0@testapp/gems/activerecord-3.1.3 /lib/active_record/attribute_methods.rb:60:in method_missing' from (irb):4 from /home/justin/.rvm/gems/ruby-1.9.3-p0@testapp/gems/railties-3.1.3/lib/rails/commands/console.rb:45:instart' from /home/justin/.rvm/gems/ruby-1.9.3-p0@testapp/gems/railties-3.1.3/lib/rails/commands/console .rb:8:in start' from /home/justin/.rvm/gems/ruby-1.9.3-p0@testapp/gems/railties-3.1.3/lib/rails/commands.rb:40:in' 来自 /home/justin/j/RubymineProjects/auth/script/rails:6:in require' from /home/justin/j/RubymineProjects/auth/script/rails:6:in' 来自 -e:1:in load' from -e:1:in'

更新:这绝对是 ruby​​ 1.9.3 的某种问题。我在 1.9.2 上尝试了相同的 gem,我没有任何问题。

0 投票
1 回答
2429 浏览

ruby-on-rails-3 - 为什么在 Rails 中路由时使用 match 而不是 get?

在 Ruby on Rails 3 教程中,代码使用:

而不是

即使所有路由都只需要 HTTP GET 动词。为什么不使用get(或:via => [:get]on match)并限制路由操作作为实践?

0 投票
1 回答
815 浏览

ruby-on-rails - Rspec 可靠性与路由。(Rails 示例 RoR 教程)

在学习 Ruby on Rails 5.2 上的示例教程时,我对 Rspec 感到沮丧。

我目前正在尝试使用 rspec 测试我的路由,即使我尽我所知正确地遵循了教程中的步骤并且通过手动检查和测试路由来验证路由是否有效,测试总是以失败的形式返回我。

例如,layout_links_spec.rb 如下所示:

我的路线看起来像:

Rspec 返回此失败:

我的 pages_controller_spec.rb 测试也出现类似错误

得到这个 rspec 错误:

我用教程检查了我的代码,它看起来正确。如果我输入 url localhost:3000/home 或 /about 等,我会进入正确的页面,表明它必须正确路由。我可以继续学习本教程,但我想学习如何做 TDD 并在实践中使用 rspec,但我觉得我不能依赖 rspec 来做到这一点......

0 投票
2 回答
2358 浏览

ruby-on-rails - PagesController#home 中的 NoMethodError

我正在阅读 Rails 教程第 12 章,当用户退出(登录正常)时,主页/主页上出现以下错误:

我是 Rails 的新手,所以请在您的回复中明确说明!非常感谢..

PagesController#home 中的 NoMethodError

Rails.root:/Users/fkhalid2008/Documents/First-app

应用程序跟踪 | 框架跟踪 | 全跟踪

页面控制器

主页视图 (/app/views/pages/home.html.erb)

饲料部分

Feed_item 部分

0 投票
2 回答
411 浏览

ruby-on-rails - 将应用程序部署到 Heroku 时出现 500 错误

当我尝试将我的应用程序部署到 Heroku 时出现 500 错误(它在我的本地主机上运行良好)。不知道为什么会这样。

我该如何解决?错误详情如下...

错误详情

页面控制器

用户模型

后模型

0 投票
1 回答
725 浏览

ruby-on-rails - Railstutorial.org 验证唯一的电子邮件

Ruby on Rails 3 Tutorial的第 6.2.4 节中,Michael Hartl 描述了一个关于检查电子邮件地址唯一性的警告:如果两个相同的请求及时接近,请求 A 可以通过验证,然后 B 通过验证,然后 A 被保存,然后B 被保存,你得到两个具有相同值的记录。每个在检查时都是有效的。

我的问题与解决方案无关(对数据库设置唯一约束,因此 B 的保存不起作用)。这是关于编写测试以证明解决方案有效。我尝试自己编写,但无论我想出什么,结果都只是模仿了常规的、简单的唯一性测试。

作为 rspec 的新手,我天真的方法是只编写场景:

但是该测试在与常规唯一性测试完全相同的情况下通过/失败;编写我的B.save.should == false代码时通过,以便常规唯一性测试通过并在常规测试失败时失败。

所以我的问题是“我怎样才能编写一个 rspec 测试来验证我正在解决这个问题?” 如果答案是“它很复杂”,我应该看看不同的 Rails 测试框架吗?