将“/”重定向到Rails的routes.rb中的资源丰富的路由

时间:2018-01-11 05:16:27

标签: ruby-on-rails ruby

更新(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”?

4 个答案:

答案 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