Sinatra:’/ route’中的NameError,未定义的局部变量或方法
我正在尝试为cms网站建立一个管理员后端。
这是我的应用程序的结构
├── app.rb ├── Gemfile ├── models │ └── models.rb ├── routes │ └── routes.rb └── views ├── categories.erb ├── # ... other view files
app.rb
require 'sinatra' require 'data_mapper' require 'dm-core' require 'dm-migrations' require 'digest' enable :sessions DataMapper.setup(:default, 'mysql://username:password@localhost/database') require './models/models.rb' require './routes/routes.rb' DataMapper.finalize
models.rb
class Category include DataMapper::Resource property :id, Serial property :name, String has n, :posts end # other model definitons
我在routes.rb中定义了一个categories
路由
... get '/categories' do @categories = Category.all erb :categories end ...
视图( categories.erb
)文件的内容。
#table headers [:updated_at.desc]).first.updated_at.strftime("%d/%m/%Y") %>
当我浏览/categories
路由时,服务器会发出此错误
NameError at /categories undefined local variable or method `с' for #
我以前没有遇到过这样的问题。 而且真的不知道发生了什么。
问题可能不在于应用程序结构(app.rb中的require序列),因为在get '/categories'
我已经定义了一个post '/login'
路由,它根据数据库记录检查用户输入。 它按我的意愿运作。
post '/login' do email = params[:email] pwd = params[:password] user = Author.first(:email=>email) if user.nil? redirect to ('/register') elsif !user.nil? if Digest::MD5.hexdigest(pwd) == user.password ... #and so on
UPDATE
我用相同的方法列出了其他表/模型,并且它们都按照我的预期工作,但是类别。
other routes get '/articles' do @articles = Post.all(:is_blog_post => false) erb :site_articles end ##blog articles get '/blogposts' do @barticles = Post.all(:is_blog_post => true) erb :blog_articles end #users get '/admin_users' do @admins = Author.all(:is_admin=>true) erb :admin_users end #bloggers get '/bloggers' do @bloggers = Author.all(:is_admin=>false) erb :blog_users end
和相应的视图文件网站文章
博客文章
管理员
博客
你在某种程度上得到了一个奇怪的角色。 这不是<%= с.posts.count %>
的“正常”拉丁语c
,它是U + 0441,CYRILLIC SMALL LETTER ES 。 它看起来像拉丁语。
要修复它,只需删除该字符并用普通c
重新写入。