问题标签 [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 回答
250 浏览

ruby-on-rails - 使用 ruby​​ on rails 为未登录用户查找和使用永久链接页面的 id

我正在修改一个微帖子 ruby​​ on rails 教程应用程序,并遇到了以下让我难过的问题:

用户有一个永久链接 URL,http://localhost:3000/users/exampleuser。访问者可以访问此网址并回答调查问卷。如果 exampleuser (current_user) 登录到他们自己的帐户,则以下代码有效。但是,如果您以访客身份前来,不需要登录,我会收到一个看起来像 Null User ID 的错误。我尝试分配正确的用户 ID 的所有尝试均未成功,尽管在我看来用户 ID 不再为空。

这是我收到的错误:

在 2012-02-24 20:28:56 -0500 开始 POST "/polls" for 127.0.0.1 由 PollsController#create 作为 HTML 参数处理:{"utf8"=>"✓", "authenticity_token"=>"ZE/ KXWCnBfE8PAn1CyAM51rnQI6z2Ut1UvHavEqSkZY=", "poll"=>{"overall_grade"=>"strong", "relevance"=>"strong", "personalization"=>"strong", "design"=>"strong", "value_proposition"= >"strong", "responder_name"=>"test", "responder_email"=>"test@test.com", "comments"=>"test"}, "commit"=>"提交成绩"} 用户负载 ( 0.2ms) SELECT "users".* FROM "users" WHERE "users"."id"IS NULL LIMIT 1 Completed 500 Internal Server Error in 47ms

RuntimeError (Called id for nil, 错误地是 4 -- 如果你真的想要 nil 的 id,使用 object_id): app/controllers/polls_controller.rb:5:in `create'

使用控制台我可以看到第一个用户(exampleuser)没问题。

但是由于某种原因,这个逻辑在我的 Polls 控制器中不起作用。具体来说,我认为 Polls Controller 中的以下几行是问题所在:

任何见解将不胜感激。约翰

投票控制器

民意调查模型

用户模型

用户控制器

页面控制器

路线

0 投票
2 回答
1654 浏览

ruby-on-rails - 在 Rails 3 中返回 nil 的 User.authenticate 方法?

即使用户以正确的电子邮件和密码存在于数据库中,User.authenticate 方法也会返回 nil。当从 Sessions 控制器中的 Create 操作或从 Rails 控制台 (irb) 调用身份验证方法时,会发生这种情况。

任何有关此问题的帮助将不胜感激。

这是我的用户模型:

0 投票
6 回答
30836 浏览

ruby-on-rails - Rspec 和命名路由

我对rails很陌生,并试图遵循railstutorial。一切都很好,除了我的测试无法通过命名路线(5.3.3)

我的 routes.rb :

我的第一次测试(spec/controllers/static_pages_controller_spec.rb):

spec_helper.rb 看起来像(没有所有注释的东西)

我从 rspec 得到的错误都是这样的:

我已经尝试过使用

在 spec_helper 中,但它将我的错误更改为

我也尝试了不同的方式来重命名我的路线,但它们都没有奏效。我回到教程版。

如果它可以帮助找出究竟是什么问题,我在 Ubuntu 11.10 上,使用 rails 3.2.1 和 ruby​​ 1.9.2p290。希望你能帮忙,我花了很长时间在谷歌上搜索解决方案,但没有找到任何解决方案^^'

0 投票
1 回答
190 浏览

ruby-on-rails - Sessions_Helper Rails 3 教程第 9 章中的用户分配

我正在使用 Rails 3.1.1 完成 Hartl 的教程书,一切正常,直到第 9 章并使用布局链接更新 _header.html.erb。一旦我对 _header.html.erb 和 spec/.../layout_links 进行更改,rspec 就会返回失败,并且本地网络服务器会返回错误消息而不是网页。问题似乎是 session_helper.rb 中的“用户”。我在本书的清单 9.26 中输入了以下代码:

执行此操作后,尝试在本地服务器上显示时收到错误消息:

哪个可以追溯到 <% if signed_in? %>

我的 session_helper 文件是:

有人可以指出我解决问题的正确方向吗?

0 投票
2 回答
1505 浏览

ruby-on-rails - Ruby on Rails TDD;测试时出错

我正在尝试遵循 TDD on Rails 教程,该教程可在此处在线获得

在测试第一个应用程序时,我遇到了一个错误。

我的 spec.rb 代码是这样的:

运行测试后,我收到此错误:

我将非常感谢您的帮助。

0 投票
2 回答
175 浏览

ruby-on-rails - RailsTutorial.org 和 Remember_Tokens

在 Rails 教程的第 8 章中,Michael Hartl 介绍了“记住令牌”的概念,以便即使在浏览器关闭后也能记住会话。他提到一个会话由一个指向用户的记忆令牌组成,这个记忆令牌存储在一个用户对象中。

在本教程的前面部分,我们进行了大量工作来对密码进行哈希处理,这样如果我们的数据库遭到破坏,我们的密码仍然是安全的。然而,随着 remember_tokens 的引入,数据库泄露将产生一个纯文本的记忆令牌,从而使会话易于伪造。

也许有一些固有的“魔法”(通常似乎是这种情况),即使使用适当、有效的记忆令牌也会阻止 CSRF ......有人能启发我吗?

0 投票
1 回答
65 浏览

ruby-on-rails - 为 mhartl/railstutoria 寻找稳定的用户设置 gem

每次我查看 Rails 时,它都会发生变化。

唯一跟上的人是 mhartl。有了他精彩的教程。

我在找:

rvm simple-user-template-by-mh

0 投票
1 回答
570 浏览

ruby-on-rails - Ruby on Rails 教程,第 3 章 Gemfile 错误

我正在编写本教程:http ://ruby.railstutorial.org/chapters/static-pages#top ...您可以 [ctrl+f]Listing 3.1. A Gemfile for the sample app找到我的位置。

我只是复制并粘贴了那里给出的 gemfile(它没有用,所以我继续尝试 10.42 中的一个,因为我必须使用它无论如何,在某些时候。)

对于 10.42 列表,它给了我一个错误,Could not find gem 'will_paginate (= 3.0.pre2) ruby' in the gems available on this machine.

  • Rails 是 3.0.11 版本
  • Ruby 版本:1.8.7 (2012-02-08 patchlevel 358) [i386-cygwin]

接下来是显示错误的终端的复制粘贴。这里的格式很糟糕,所以我也把它放在了一个谷歌文档页面上:https ://docs.google.com/document/d/1SJsfIOtKKR2Rb228kgfpTdpYhGsWLCwfkORXJA1qYBs/edit


Brian@RobCo_Terminal /home/brian/sample_app $ rails generate rspec:install 在机器上可用的 gem 中找不到 gem 'will_paginate (= 3.0.pre2) ruby​​'。运行 bundle install 来安装缺少的 gem。

1) 使用 gravatar_image_tag (1.0.0.pre2) 安装带有本机扩展的 nokogiri (1.5.2) 3 [main] ruby​​ 7644 child_info_fork::abort: 'etc.so' (0x110000) 所需的地址空间已被占用 3 [main ] ruby​​ 6352 child_info_fork::abort: 'etc.so' (0x110000) 所需的地址空间已被占用 3 [main] ruby​​ 1524 child_info_fork::abort: 'etc.so' (0x110000) 所需的地址空间已被占用 不幸的是,发生致命错误。请将此错误报告给位于 github.com/carlhuda/bundler/issues 的 Bundler 问题跟踪器,以便我们修复它。谢谢!/usr/lib/ruby/site_ruby/1.8/rubygems/installer.rb:483:in `build_extensions':错误:无法构建 gem 原生扩展。(Gem::Installer::ExtensionBuildError) 2) 带有本机扩展 3 [main] ruby​​ 7644 child_info_fork::abort: 'etc.so' (0x110000) 需要的地址空间已被占用 3 [main] ruby​​ 6352 child_info_fork::abort: 'etc.so 需要的地址空间' (0x110000) 已被占用 3 [main] ruby​​ 1524 child_info_fork::abort: 'etc.so' (0x110000) 所需的地址空间已被占用 不幸的是,发生了致命错误。请将此错误报告给位于 github.com/carlhuda/bundler/issues 的 Bundler 问题跟踪器,以便我们修复它。谢谢!/usr/lib/ruby/site_ruby/1.8/rubygems/installer.rb:483:in `build_extensions':错误:无法构建 gem 原生扩展。(Gem::Installer::ExtensionBuildError) 2) 带有本机扩展 3 [main] ruby​​ 7644 child_info_fork::abort: 'etc.so' (0x110000) 需要的地址空间已被占用 3 [main] ruby​​ 6352 child_info_fork::abort: 'etc.so 需要的地址空间' (0x110000) 已被占用 3 [main] ruby​​ 1524 child_info_fork::abort: 'etc.so' (0x110000) 所需的地址空间已被占用 不幸的是,发生了致命错误。请将此错误报告给位于 github.com/carlhuda/bundler/issues 的 Bundler 问题跟踪器,以便我们修复它。谢谢!/usr/lib/ruby/site_ruby/1.8/rubygems/installer.rb:483:in `build_extensions':错误:无法构建 gem 原生扩展。(Gem::Installer::ExtensionBuildError) so' (0x110000) 已被占用 3 [main] ruby​​ 1524 child_info_fork::abort: 'etc.so' (0x110000) 所需的地址空间已被占用 不幸的是,发生了致命错误。请将此错误报告给位于 github.com/carlhuda/bundler/issues 的 Bundler 问题跟踪器,以便我们修复它。谢谢!/usr/lib/ruby/site_ruby/1.8/rubygems/installer.rb:483:in `build_extensions':错误:无法构建 gem 原生扩展。(Gem::Installer::ExtensionBuildError) so' (0x110000) 已被占用 3 [main] ruby​​ 1524 child_info_fork::abort: 'etc.so' (0x110000) 所需的地址空间已被占用 不幸的是,发生了致命错误。请将此错误报告给位于 github.com/carlhuda/bundler/issues 的 Bundler 问题跟踪器,以便我们修复它。谢谢!/usr/lib/ruby/site_ruby/1.8/rubygems/installer.rb:483:in `build_extensions':错误:无法构建 gem 原生扩展。(Gem::Installer::ExtensionBuildError) 在“build_extensions”中:错误:无法构建 gem 原生扩展。(Gem::Installer::ExtensionBuildError) 在“build_extensions”中:错误:无法构建 gem 原生扩展。(Gem::Installer::ExtensionBuildError)

/usr/bin/ruby.exe extconf.rb 17 [main] ruby​​ 7892 child_info_fork::abort: 'etc.so' (0x2E0000) 所需的地址空间已被占用 5 [main] ruby​​ 7128 child_info_fork::abort: 地址空间'etc.so' (0x2E0000) 所需的地址空间已被占用 4 [main] ruby​​ 7568 child_info_fork::abort: 'etc.so' (0x2E0000) 所需的地址空间已被占用 4 [main] ruby​​ 3196 child_info_fork::abort: 'etc.so' (0x2E0000) 所需的地址空间已被占用 26 [main] ruby​​ 2260 child_info_fork::abort: 'etc.so' (0x2E0000) 所需的地址空间已被占用 4 [main] ruby​​ 6852 child_info_fork::中止:'etc.so' (0x2E0000) 所需的地址空间已被占用,正在检查 libxml/parser.h...没有缺少 libxml2。请访问 nokogiri.org/tutorials/installing_nokogiri。

* extconf.rb 失败 * 由于某种原因无法创建 Makefile,可能缺少必要的库和/或头文件。检查 mkmf.log 文件以获取更多详细信息。您可能需要配置选项。

提供的配置选项: --with-opt-dir --without-opt-dir --with-opt-include --without-opt-include=${opt-dir}/include --with-opt-lib -- without-opt-lib=${opt-dir}/lib --with-make-prog --without-make-prog --srcdir=. --curdir --ruby=/usr/bin/ruby --with-zlib-dir --without-zlib-dir --with-zlib-include --without-zlib-include=${zlib-dir}/include --with-zlib-lib --without-zlib-lib=${zlib-dir}/lib --with-iconv-dir --without-iconv-dir --with-iconv-include --without-iconv- include=${iconv-dir}/include --with-iconv-lib --without-iconv-lib=${iconv-dir}/lib --with-xml2-dir --without-xml2-dir --with -xml2-include --without-xml2-include=${xml2-dir}/include --with-xml2-lib --without-xml2-lib=${xml2-dir}/lib --with-xslt-dir --without-xslt-dir --with-xslt-include --without-xslt-include=${xslt-dir}/include --with-xslt-lib --without-xslt-lib=${xslt-dir }/库

Gem 文件将继续安装在 /usr/lib/ruby/gems/1.8/gems/nokogiri-1.5.2 中以供检查。结果从 /usr/lib/ruby/site_ruby/1.8/rubygems/installer.rb:446:in 记录到 /usr/lib/ruby/gems/1.8/gems/nokogiri-1.5.2/ext/nokogiri/gem_make.out每个'来自 /usr/lib/ruby/site_ruby/1.8/rubygems/installer.rb:446:inbuild_extensions' 来自 /usr/lib/ruby/site_ruby/1.8/rubygems/installer.rb:198:in install' 来自 /usr /lib/ruby/gems/1.8/gems/bundler-1.1.0/lib/bundler/source.rb:90:ininstall' 来自 /usr/lib/ruby/gems/1.8/gems/bundler-1.1.0/lib /bundler/rubygems_integration.rb:82:in preserve_paths' 来自 /usr/lib/ruby/gems/1.8/gems/bundler-1.1.0/lib/bundler/source.rb:89:ininstall' 来自 /usr/lib/ ruby/gems/1.8/gems/bundler-1.1.0/lib/bundler/installer.rb:73:in install_gem_from_spec' 来自 /usr/lib/ruby/gems/1.8/gems/bundler-1.1。

0 投票
2 回答
656 浏览

ruby-on-rails - Rails 教程 10.2 - 6:“用户#edit 中的 NoMethodError”

我第一次浏览 Hartl 教程,在第 10 章编辑/更新用户时遇到错误。接下来,我>>应该<<至少能够查看用户编辑页面,但不断收到以下错误。已经经历了几次,但似乎无法找到我的问题的根源。请注意,这是我第一次做任何与编程相关的事情,所以慢慢来。

错误

NilClass:Class 的未定义方法“model_name”

从我的用户编辑视图中错误地调用了行

<%= form_for(@user) do |f| %>

来自用户控制器的编辑方法

在我的用户新视图中使用了类似的代码块,没有任何问题,我不知道为什么这会返回 nil 并且已经尝试过新用户和现有用户。谢谢!

0 投票
1 回答
1024 浏览

ruby-on-rails - Michael Hartl 教程第 6 章:错误 bcrypt_ext.bundle:[BUG] 分段错误

但是,当我将 has_secure_password 添加到我的用户模型时,我遵循了非常棒的指南:class User < ActiveRecord::Base attr_accessible :name, :email, :password, :password_confirmation has_secure_password

然后尝试通过 rails 控制台添加用户:

我收到一条很长的错误消息,开头为:

并继续进行更多行...

如果我从 user.rb 中取出“has_secure_password”并尝试创建与上面相同的用户,我会收到以下错误:

最后,如果我在模型中插入“attr_accessor :password, :password_confirmation”,我可以成功添加用户,但是,password_digest 为 nil。

我知道我做错了什么,但是,我很难过。