Routing Error

Witam,
mam problem z pierwszą aplikacją zaprezentowaną w “Agile Web Development with Rails”…

Jest to najprostszy Hello world.

Mam say_controller:

class SayController < ApplicationController
def hello
end
end

hello.rhtml:

Hello, Rails!

Hello from Rails!

I standardowy routes.rb (może tu jest problem?):

ActionController::Routing::Routes.draw do |map|

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

Sample of regular route:

map.connect ‘products/:id’, :controller => ‘catalog’, :action => ‘view’

Keep in mind you can assign values other than :controller and :action

Sample of named route:

map.purchase ‘products/:id/purchase’, :controller => ‘catalog’, :action => ‘purchase’

This route can be invoked with purchase_url(:id => product.id)

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

map.resources :products

Sample resource route with options:

map.resources :products, :member => { :short => :get, :toggle => :post }, :collection => { :sold => :get }

Sample resource route with sub-resources:

map.resources :products, :has_many => [ :comments, :sales ], :has_one => :seller

Sample resource route with more complex sub-resources

map.resources :products do |products|

products.resources :comments

products.resources :sales, :collection => { :recent => :get }

end

Sample resource route within a namespace:

map.namespace :admin do |admin|

# Directs /admin/products/* to Admin::ProductsController (app/controllers/admin/products_controller.rb)

admin.resources :products

end

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

map.root :controller => “say”

See how all your routes lay out with “rake routes”

Install the default routes as the lowest priority.

Note: These default routes make all actions in every controller accessible via GET requests. You should

consider removing the them or commenting them out if you’re using named routes and resources.

map.connect ‘:controller/:action/:id’
map.connect ‘:controller/:action/:id.:format’
end

Po wywołaniu: http://***/demo/public/say/hello

dostaję komunikat:
Routing Error

No route matches “/demo/public/say/hello” with {:method=>:get}

To samo dzieje się gdy wywołam samo: /demo/public.

Spotkał się ktoś może z takim problemem i wie jak go rozwiązać…?

Pzdr.

Na początek spróbuj otworzyć /demo/say/hello

Jest to samo:
Routing Error

No route matches “/ror/demo/say/hello” with {:method=>:get}


Może istotną informacją będzie, że korzystam z passengera (pliki umieszczone na hostingu).

Błąd pojawia się już od razu po wywołaniu:
rails -d mysql demo

(i ustawieniu konfiguracji).

W .htaccess tego katalogu mam:
Options FollowSymLinks
PassengerEnabled On
PassengerAppRoot /home/***/public_html/ror/demo/
RailsEnv development

i od razu po uruchomieniu w przeglądarce jest routing error…

Ma być /say/hello bez żadnego prefixu /demo/public.

Radarek, to samo miałem na myśli, aczkolwiek sądziłem, że jego aplikacja znajduje się w folderze demo. Jeśli jednak tam się znajduje, to pewnie coś nie tak z konfiguracją (.htaccess?).

Tak, aplikacja znajduje się w folderze “demo”, więc to niestety nie pomogło…

Po kilku godzinach kombinacji zaczęło działać jak całość aplikacji przeniosłem poza public_html, do environment.rb dodałem:
config.action_controller.relative_url_root = “/approot”
i zrobiłem symlinka
ln -s /home/user/***/public /home/user/public_html/approot

To był najdłuższy “Hello world” w moim życiu :slight_smile:

Dzięki i pozdrawiam!