更新(2018年1月11日)
根据建议,我的文件现在如下所示。行为保持不变(不起作用)。
/rottenpotatoes/app/controllers/application_controller.rb
:
class ApplicationController < ActionController::Base
protect_from_forgery
def index
redirect_to root_url
end
end
/rottenpotatoes/config/routes.rb
:
Rottenpotatoes::Application.routes.draw do
# map '/' to be a redirect to '/movies'
root 'movies#index'
resources :movies
end
我正在尝试将应用上的默认/主目录重定向到“movies#show”。我似乎无法管理它 - 'URL / movies'工作正常,但根据服务器日志,请求/
显示'assets / rails.png'(“欢迎使用Rails”页面)
我确信这有一个简单的答案,我只是不知道它是什么。我环顾四周,Rails文档无济于事。我正在使用c9.io,并使用rerun -- rails s -p $PORT -b $IP
运行服务器。
Rottenpotatoes /配置/ routes.rb中:
Rottenpotatoes::Application.routes.draw do
# map '/' to be a redirect to '/movies'
get "/", to: "movies#index" # I also tried movies#show
resources :movies
end
rake routes
说:
RubyDep: WARNING: Your Ruby is outdated/buggy.
RubyDep: WARNING: Your Ruby is: 2.3.0 (buggy). Recommendation: upgrade to 2.3.1.
RubyDep: WARNING: (To disable warnings, see:http://github.com/e2/ruby_dep/wiki/Disabling-warnings )
[DEPRECATION] `last_comment` is deprecated. Please use `last_description` instead.
Prefix Verb URI Pattern Controller#Action
GET / movies#index
movies GET /movies(.:format) movies#index
POST /movies(.:format) movies#create
new_movie GET /movies/new(.:format) movies#new
edit_movie GET /movies/:id/edit(.:format) movies#edit
movie GET /movies/:id(.:format) movies#show
PATCH /movies/:id(.:format) movies#update
PUT /movies/:id(.:format) movies#update
DELETE /movies/:id(.:format) movies#destroy
如何让“/”转到“/ movies”?
答案 0 :(得分:3)
如果您想movies/index
您的默认主页,请在routes.rb
root 'movies#index'
/
是您的根路径,如果您使用<a href="/"> Home </a>
,您将被重定向到主路径
使用app方法,您可以访问URL和路径助手,以及执行请求。
$ rails console
Loading development environment (Rails 5.0.6)
irb(main):001:0> app.root_path
=> "/"
irb(main):002:0> app.get _
Started GET "/" for 127.0.0.1 at 2018-01-11 12:24:38 ....
希望能提供帮助
答案 1 :(得分:2)
请尝试
root 'movies#index'
在routes.rb。
的末尾写下它在routes.rb
中 root
用于定义根网址
如果它出现不止一次,那么它将被最后一个覆盖。
现在宣布root movies#index
您可以使用redirect_to root_url
从控制器的任何位置重定向到/movies
答案 2 :(得分:0)
在routes.rb
中Rottenpotatoes::Application.routes.draw do
# map '/' to be a redirect to '/movies'
root 'movies#index'
resources :movies, except: [:index]
end
并在您要重定向的控制器中
redirect root_path
答案 3 :(得分:0)
根据您的代码使用它,这有效:
Rottenpotatoes::Application.routes.draw do
get "/", to: "movies#index", :as => "root"
resources :movies
end