生成项目后Ruby on Rails语法错误

时间:2014-01-09 03:14:19

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

我使用命令rails new reservation_maker -d mysql生成了项目,在完成生成后我得到了4个错误。所有人都是syntax error, unexpected ':'。第一个是在gem 'sdoc', require: false行的gemfile中。第protect_from_forgery with: :exception行中的application_controller.rb中的第二个。第三个是在ReservationMaker::Application.config.session_store :cookie_store, key: '_reservation_maker_session'行的session_store.rb中。第wrap_parameters format: [:json] if respond_to?(:wrap_parameters)行上的最后一个wrap_parameters.rb。那么,我做错了什么?

编辑: 我还回顾了之前的rails项目,它具有与此相同的设置和代码行,但没有任何错误。另外我使用的是ruby 2.0.0p353(2013-11-22修订版43784)[x86_64-linux]和rails 4.0.2

我刚刚将:替换为=>并清除了错误但当我尝试运行服务器时它告诉我gem文件中有错误

2 个答案:

答案 0 :(得分:1)

ruby -v返回什么?

它似乎在声明为key: value的哈希上崩溃。这是ruby 1.9+中新的哈希语法支持。您可能正在运行ruby 1.8.7,它仅支持使用:key => value等箭头声明的哈希值。

您应该安装ruby 2.0以使用新的rails 4项目。

答案 1 :(得分:0)

早些时候,当我用:替换=>时,我并没有完全理解两者之间的区别。在学习了冒号只能用于符号后,我将冒号移到了前面,并将=>添加到代码的每一行中,引发错误。

gem 'sdoc', require: false
protect_from_forgery with: :exception
ReservationMaker::Application.config.session_store :cookie_store, key: '_reservation_maker_session'
wrap_parameters format: [:json] if respond_to?(:wrap_parameters)

成了

gem 'sdoc', :require => false
protect_from_forgery :with => :exception
ReservationMaker::Application.config.session_store :cookie_store, :key => '_reservation_maker_session'
wrap_parameters :format => [:json] if respond_to?(:wrap_parameters)

之后它起作用了。如果有人知道如何修复rails中的行为,请告诉我。