我在Rails 3.2应用程序中构建了一个名为“Subject”的模型。我在下面使用了scaffold命令。
rails g scaffold Subject subject singular:boolean gender:integer subject_masculine subject_feminine subject_neuter language:references --skip-stylesheets
脚手架几乎到了最后,但随后给出了一个关于助手的神秘错误:
名称'SubjectsHelper'已在您的应用程序中使用或由Ruby on Rails保留。请选择替代方案并再次运行此生成器。
我试过逆转脚手架并重建。最后我刚建了桌子,似乎工作正常。没有 helpers / subjects_helper.rb 文件,但我不希望这个特定模型需要帮助。
我在任何保留字列表中都找不到主题,但这本身就是一个问题。在这个问题上提出了另一个SO帖子。
List of reserved words in rails *3*
为什么我会收到此错误,我可以忽略它吗?
修改
我的Gemfile按要求
source 'https://rubygems.org'
gem 'rails', '3.2.8'
gem 'thin'
gem 'sinatra'
gem 'pg'
gem 'simple_form'
gem "nested_form"
gem 'thinking-sphinx'
gem 'devise'
gem 'haml-rails'
gem 'ruby_parser'
gem 'html2haml'
gem 'best_in_place'
gem 'carrierwave'
gem 'fog'
gem 'seed_dump'
gem 'bluecloth'
gem 'redcarpet'
group :assets do
gem 'sass-rails', '~> 3.2.3'
gem 'coffee-rails', '~> 3.2.1'
gem 'prototype-rails'
gem 'uglifier', '>= 1.0.3'
gem 'twitter-bootstrap-rails'
gem 'therubyracer'
gem 'less-rails'
gem 'jquery-datatables-rails'
end
gem 'jquery-rails'
gem 'social_stream'
gem 'rails-footnotes', '>= 3.7.5.rc4', :group => :development
group :development do
gem 'rails-erd'
gem 'quiet_assets'
end
gem 'vestal_versions', :git => "git://github.com/futurechimp/vestal_versions.git"
gem 'diffy'
gem 'diffrent'
EDIT2
根据Philip的建议,我从Rails控制台运行了 Module.constants 命令。在输出中,有两个“主题”值:
:SubjectsHelper
:Subject
我多次检查没有帮手,所以我决定加一个。我使用以下代码创建了 helpers / subjects_helper.rb 文件:
module SubjectsHelper
end
Rails现在重新启动了OK。我仍然不明白发生了什么。
答案 0 :(得分:1)
我找到了。我正在使用社交流宝石,它在路线中有一个主题。
subject_lrdd /subjects/lrdd/:id(.:format)
它必须埋在引擎的某个地方。
答案 1 :(得分:1)
正如您所说,SubjectsHelper已由Social Stream提供。参见:
https://github.com/ging/social_stream/blob/master/base/app/helpers/subjects_helper.rb
您的解决方案正在运行,因为您正在重新打开模块,这是Ruby中的有效操作。