我一直在尝试遵循官方的 Rails 指南并遇到了问题。在新项目中使用以下代码构建的代码似乎存在语法错误消息:
rails generate scaffold Post name:string title:string content:text
.
很简单,对吧?我正在浏览官方 rubyonrails.org “制作博客”教程的第一页。但是当我去http://localhost:3000/posts
我得到这个问题。
语法错误消息:
/projects/blog/app/controllers/posts_controller.rb:9: syntax error, unexpected ':', expecting '}'
format.json { render json: @posts }
^
在步骤 6.3中,我应该看到一个简单的“列出帖子”页面,大概没有博客条目。
我的 posts_controller.rb 文件:
class PostsController < ApplicationController
# GET /posts
# GET /posts.json
def index
@posts = Post.all
respond_to do |format|
format.html # index.html.erb
format.json { render json: @posts }
end
end
...(continued. This was all generated via a scaffold.)
我的设置:
指南说:
本指南基于 Rails 3.2。此处显示的某些代码不适用于早期版本的 Rails。
我的rails -v
说:
Rails 3.2.8
我们推荐 Ruby 1.9.3 与 Rails 一起使用。Rails 3.2 是最后一个支持 Ruby 1.8 的版本。不支持 Ruby 1.8.6 及更早版本,1.9.1 版也不支持。
我的ruby -v
说:
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin12.2.0]
我总是收到 SyntaxError 消息,即使在尝试了不同版本的 Ruby(使用 rbenv)之后也是如此。以下是我尝试过的版本:
1.9.2-p290
1.9.2-p320
1.9.3-p194 (latest)
解决方法:
更改format.json { render json: @post }
以format.json { render :json => @post }
解决问题。
我的问题:
为什么在最新版本的 Ruby 和最新版本的 Rails 中,当版本应该兼容时,我会收到 SyntaxError ?此时在官方教程的第一页,我什至还没有写任何ruby。posts_controller.rb
我文件中的这些行是由最新的稳定版 Rails生成的,语法已经过时了?Rails 还没有更新到使用 Ruby 语法回到 1.9.2 版?