Rails URL不起作用

时间:2012-04-18 16:38:51

标签: ruby-on-rails ubuntu webrick refinerycms

我打算在这里做一个很长的故事。我正在Ubuntu服务器上的RefineryCMS中构建一个应用程序,一切正常,直到我开始收到以下错误消息:

.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.0.12/lib/active_support/dependencies.rb:242:in `require': no such file to load -- devise (LoadError)

我能够通过运行

来解决这个错误
gem install devise

接着是

bundle install

bundle update

这解决了它无法启动的问题,但没有一个网址工作,包括默认的,例如/ users / login,任何时候我都会导航到这样的页面我会页面显示错误,例如

No route matches [GET] "/users/login"

认为这是我的gemset的一个问题我创建了一个新的并设置了一个新的,然后启动了新的炼油厂应用程序,目的是将我的文件移动到它。然而,当启动它以确保炼油厂正常工作时,它将我带到了默认的rails页面,在删除/public/index.html之后我再次启动它并得到了同样的错误

No route matches [GET] "/users/login"

要仔细检查炼油厂是否正常工作,我运行了一个简单的命令行命令来覆盖/app/views/pages/show.html.erb文件,该文件工作正常,然后再次启动它并手动输入用户的URL /注册页面并再次获得相同的路由错误。其中所有这些都证实了我的路线被解释的问题,虽然我不知道在什么级别。

我在原始应用程序中使用rails版本3.0.12,webrick 1.3.1和ruby 1.9.2。

目前这是我的Gemfile:

source 'http://rubygems.org'

gem "devise"
gem "savon"
gem 'refinerycms-testing'
gem "factory_girl_rails"
gem "guard-rspec"
gem "rspec"

# gem 'rails', '3.0.0'

# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'

gem 'sqlite3', :require => 'sqlite3'

# Use unicorn as the web server
# gem 'unicorn'

# Deploy with Capistrano
# gem 'capistrano'

# To use debugger
# gem 'ruby-debug'

# Bundle the extra gems:
# gem 'bj'
# gem 'nokogiri'
# gem 'sqlite3-ruby', :require => 'sqlite3'
# gem 'aws-s3', :require => 'aws/s3'

# Bundle gems for the local environment. Make sure to
# put test-only gems in this group so their generators
# and rake tasks are available in development mode:
# group :development, :test do
#   gem 'webrat'
# end

# REFINERY CMS ================================================================
# Anything you put in here will be overridden when the app gets updated.

#gem 'refinerycms',              '~> 1.0.9'

=begin #testing
group :development, :test do
    # To use refinerycms-testing, uncomment it (if it's commented out) and run 'bundle install'
    # Then, run 'rails generate refinerycms_testing' which will copy its support files.
    # Finally, run 'rake' to run the tests.
    #gem 'refinerycms-testing'
    gem 'capybara-webkit'

     if RbConfig::CONFIG['target_os'] =~ /darwin/i
       gem 'growl'
    end

   gem 'spork', '~> 0.9.0.rc', :platforms => :ruby
   gem 'guard-spork', :platforms => :ruby
   gem 'guard-rspec', :platforms => :ruby
   gem 'generator_spec'
 end

 =end #testing

 # END REFINERY CMS ============================================================

 # USER DEFINED


   # Specify additional Refinery CMS Engines here (all optional):
   # gem 'refinerycms-inquiries',    '~> 1.0'
   # gem "refinerycms-news",         '~> 1.2'
   # gem 'refinerycms-blog',         '~> 1.6'
   # gem 'refinerycms-page-images',  '~> 1.0'

   # Add i18n support (optional, you can remove this if you really want to).
   #gem 'refinerycms-i18n',         '~> 1.0.0'

 # END USER DEFINED

我的routes.rb文件如下:

 Quicksmile::Application.routes.draw do

   match "/" => redirect("/new-practices") 

   # The priority is based upon order of creation:
   # first created -> highest priority.

   # Sample of regular route:
   #   match 'products/:id' => 'catalog#view'
   # Keep in mind you can assign values other than :controller and :action

   # Sample of named route:
   #   match 'products/:id/purchase' => 'catalog#purchase', :as => :purchase
   # This route can be invoked with purchase_url(:id => product.id)

   # Sample resource route (maps HTTP verbs to controller actions automatically):
   #   resources :products

   # Sample resource route with options:
   #   resources :products do
   #     member do
   #       get 'short'
   #       post 'toggle'
   #     end
   #
   #     collection do
   #       get 'sold'
   #     end
   #   end

   # Sample resource route with sub-resources:
   #   resources :products do
   #     resources :comments, :sales
   #     resource :seller
   #   end

   # Sample resource route with more complex sub-resources
   #   resources :products do
   #     resources :comments
   #     resources :sales do
   #       get 'recent', :on => :collection
   #     end
   #   end

   # Sample resource route within a namespace:
   #   namespace :admin do
   #     # Directs /admin/products/* to Admin::ProductsController
   #     # (app/controllers/admin/products_controller.rb)
   #     resources :products
   #   end

   # You can have the root of your site routed with "root"
   # just remember to delete public/index.html.

   # See how all your routes lay out with "rake routes"

   # This is a legacy wild controller route that's not recommended for RESTful applications.
   # Note: This route will make all actions in every controller accessible via GET requests.
   # match ':controller(/:action(/:id(.:format)))'
 end

为什么可能导致它停止识别原始应用程序上的内置炼油厂路线或者事后启动的新应用程序?有办法解决吗?如果没有办法将事情推回到他们正常工作的地步?

1 个答案:

答案 0 :(得分:1)

在我看来,你可能已经完成了部分设计,但并非全部。你有两台发电机吗?

rails generate devise:install
rails generate devise User

如果routes.rb已正确设置,则devise_for :users通常会包含:user/sign_in。这就是创建{{1}}等所有路线的原因。