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重新写入。