Я только что обновил приложение рельсов 3.0.9 до рельсов 3.2.1, просмотрев railscasts для обновления до рельсов 3.1.0, а затем 3.2.0. Перед обновлением мой (тогда работал) routes.rb файл выглядел:Маршрутизация с рельсами 3.2.1
match "home" => "pages#index"
match "*page" => "pages#show"
root :to => "pages#index"
После обновления я изменил мой файл routes.rb в:
match "home" => "pages#index"
match "pages/*page" => "pages#show", :format => false
root :to => "pages#index"
Я получил эту идею от Ruby on Rails routing в Мамаевом Секция Globbing, чтобы имитировать рельсы версии 3.0.x.
Теперь, когда я нажимаю на моей ссылке, вынесенным:
<li><%= link_to "What We Do", "/what-we-do" %></li>
Я получаю эту ошибку:
Routing Error
No route matches [GET] "/what-we-do"
Try running rake routes for more information on available routes.
rake routes produces:
home /home(.:format) pages#index
/pages/*page pages#show
root/ pages#index
If that is helpful.
страница Я пытаюсь сделать то, что называется, мы-do.html .erb и находится в app/views/pages.
и это мой контроллер:
class PagesController < ApplicationController
def index
render :home, :layout => false
end
def show
render static_page
rescue
# page_not_found
end
private
def static_page
"#{RAILS_ROOT}/app/views/pages/#{params[:page]}.html.erb"
end
def page_not_found
render "#{Rails.root}/public/404.html", :layout => false
end
end
Кто-нибудь есть какие-либо предложения?
Так что я понял это. Я переключил свой маршрут обратно на: 'match '* page" => "pages # show", но реальная проблема была в моем контроллере. В rails 3.0.X вы используете RAILS_ROOT, но в 3.1, и это Rails.root. Спасибо всем – scommette