【问题标题】:Ruby on Rails: Hello WorldRuby on Rails:你好世界
【发布时间】:2012-04-24 06:16:03
【问题描述】:

长期 Java 开发人员,第一次 Ruby 开发人员。尝试使用 Rails 应用程序进入“hello world”步骤,但遇到了困难。

我很肯定我在这里缺少一些基本的东西。话虽如此,StackOverflow 的“具有相似标题的问题”和 Google 的“ruby rails hello world”命中(或其变体)都没有澄清我所缺少的。

我通过 RVM 安装了 ruby​​ (v1.9.3p194)、gem (1.8.23) 和 rails (3.2.3)。我使用以下方法生成了一个控制器:

rails generate controller common

在默认的“config/routes.rb”中,我有以下两次路由尝试:

Web::Application.routes.draw do
  root :to => "common#index"
  match ':controller(/:action(/:id))(.:format)'
end

当我最初在浏览器中运行“rails server”并加载“http://localhost:3000/common”时,我看到了以下内容:

Unknown action
The action 'index' could not be found for CommonController

我了解到这是因为没有为我的通用控制器定义“索引”,所以我编辑了“app/controllers/common_controller.rb”以包含以下内容:

class CommonController < ApplicationController

  def index
  end

end

我现在在浏览器的“http://localhost:3000/common”看到以下内容:

Template is missing
Missing template common/index, application/index with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :coffee]}. Searched in: * "/coding/workspace/[My] Toolbag/web/app/views"

我在根目录看到同样的东西,这是有道理的。

根据我的发现,这显然是由于我的控制器中没有任何渲染,所以我认为它应该检查“app/views/common/index.html.erb”中的某些内容——但是,我确实有一个文件,其中包含以下内容:

<h1>Hello World</h1>

我还尝试将“index.html.erb”重命名为“_index.html.erb”、“index.html”和“index”,所有这些都基于控制台错误“ActionView::Missing”的谷歌搜索变体模板”和上面类似的浏览器输出。

许多 Google 搜索结果包含建议的 sn-ps,但没有明确的指导说明要使用所述建议编辑哪些文件,或者重复我上面已经采取的步骤。

如果有人能建议我缺少什么,我将不胜感激。

PS:我以超级用户身份运行,对此处引用的所有文件拥有“root:root”所有权。 rails 可能打算作为普通用户运行吗?不过,如果是这样的话,似乎不会让我走这么远。

【问题讨论】:

  • 我不知道您的问题的答案,但如果我可以推荐,请查看ruby.railstutorial.org。毫无疑问,它是网络上最好的 Rails 教程。它还有一个很棒的“你好世界”之类的教程。

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.2


【解决方案1】:

这很奇怪。我只是完全重复了你的步骤并让它工作(使用 rails 3.2.3 和 ruby​​ 1.9.3-p0),当访问 localhost:3000/common 时,我得到了“Hello World”。

http://grab.by/dg6Y

这是我要快速尝试的方法,以确保您的设置没有问题:

1) cd 在你的 Rails 项目目录中

2) 发出这些终端命令

rails g 脚手架用户名:字符串电子邮件:字符串

rake db:迁移

3) 访问此网址 http://localhost:3000/users

如果你的 rails 设置正确,你应该会看到这个

http://grab.by/dg74

如果这些步骤不起作用,那么您的设置似乎发生了一些奇怪的事情。

另外,请务必从您的应用中删除 public/index.html 文件。如果您不删除它,您将无法看到您在路由文件中指定的自定义根页面。

如果上述方法不起作用,可能是您的 Ruby 版本有问题?

希望这会有所帮助!

【讨论】:

  • 我接受了这个答案,即使我还没有确定我的奇数问题。鉴于您确认我应该采用正确的方法,我能够在另一台计算机上重新确认我的东西应该可以工作。谢谢!
  • 我刚刚再次尝试使用 ruby​​ (v1.9.3p194)、gem (1.8.23) 和 rails (3.2.3)。仍然没有问题,所以似乎 Ruby 版本不是问题。你试过脚手架吗?
【解决方案2】:

哇。实际上,我只是偶然发现了真正的根本问题:

我在名称中带有方括号的文件夹中创建我的项目 - 也就是说,我在“/coding/workspace/[My] Toolbag”中运行“rails new web”。

今晚我碰巧在“/coding/workspace”中再次尝试,它终于成功了。因此,我从以下位置测试了“rails new web”以充实我的怀疑:

/coding/workspace/test1
/coding/workspace/test 2
/coding/workspace/test [3]
/coding/workspace/test [4
/coding/workspace/test ]5
/coding/workspace/test [6/subfolder

怀疑得到证实。文件夹 3、4、6 中的 Rails 项目演示了我在这个问题中描述的问题,而文件夹 1、2、5 中的 Rails 项目工作正常。

具体来说,问题是路径中任意位置的左括号:“[”

我正在使用 Linux Mint。尽管我还没有尝试在其他发行版、Windows 或 Mac 上重现此问题。

非常感谢Brett Sanders 的所有反复帮助和确认我的方法应该是正确的,我提交此答案并将其标记为正确,以防其他人遇到同样的问题。

【讨论】:

  • 很高兴你知道了。应该可能在帖子上添加一个 linux 标签
  • 我实际上倾向于不这样做。我刚刚在 Mac OS X 10.7.3 上确认了同样的错误。除非有人确认这不会在 Windows 上发生,否则这似乎是无处不在的问题。
  • 注意:现在在 Rails GitHub 存储库中作为错误提交:github.com/rails/rails/issues/6010
  • @DreadPirateShawn 很好地突出和追求这个问题
猜你喜欢
  • 2012-05-02
  • 2021-11-19
  • 2015-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多