我使用命令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文件中有错误
答案 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中的行为,请告诉我。