How do I redirect to root - public/index.html?
I wish to do a redirection to index.html in my application/public folder.
def get_current_user
@current_user = current_user
if @current_user.nil?
redirect_to root_path
end
end
How do I achieve this ?
I haven't modified the root in my routes.rb ( Its still commented )
开发者_JAVA百科 # root :to => "welcome#index"
I get an error saying root_path is undefined.
How do I modify routes.rb so that root_path points to public/index.html ?
You can assign a named route to a static file by passing any non-empty string as :controller
and the path to the file as the :action
for the route:
Application.routes.draw do
root :controller => 'static', :action => '/'
# or
# root :controller => 'static', :action => '/public/index.html'
end
# elsewhere
redirect_to root_path # redirect to /
Assuming you have a public/index.html
, this is what will be served.
on controller
redirect_to root_path ## (will redirect to root '/')
route file:
root 'main#index'
controller:
class MainController < ApplicationController
def index
redirect_to '/index.html'
end
end
and using rails 4 controller action live this can behave like a single page application using the M & C with a twist on the V
What you want to do is not Rails compatible.
Rails is MVC, C for controller, V for view.
So its internals need both.
Ok, public/index.html
is displayed by default but it's just because process is bypassed.
So, you could create a static
controller with an index
action and it's corresponding view (just copy/paste the content of your current public/index.html
file in it).
Then set:
root :to => "static#index"
And please, remove the public/index.html
file :)
routes.rb
...
root to: redirect('public/index.html')
...
This will redirect all request to '/'
, to 'public/index.html'
.
精彩评论