Kal*_*_89 5 ruby routes ruby-on-rails ruby-on-rails-3.2
在 Rails 中设置我的第二个项目(首先不遵循教程)并且遇到了我无法用我的路线解决的问题。一切都像我希望的那样与我的 routes.rb 文件一样:
AnimalApp::Application.routes.draw do
root to: 'static_pages#index'
# resources :animal
match '/help', to: 'static_pages#help'
match '/about', to: 'static_pages#about'
match '/contact', to: 'static_pages#contact'
match '/league', to: 'static_pages#league'
match '/animal', to: 'animal#new'
Run Code Online (Sandbox Code Playgroud)
除了我不能接触我的动物!转到 /animal/1 会引发错误:
No route matches [GET] "/animal/1"
为了解决这个问题,我改变了我的路线如下:
AnimalApp::Application.routes.draw do
root to: 'static_pages#index'
resources :animal
match '/help', to: 'static_pages#help'
match '/about', to: 'static_pages#about'
match '/contact', to: 'static_pages#contact'
match '/league', to: 'static_pages#league'
#match '/animal', to: 'animal#new'
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试查看我网站上的任何其他页面时,出现以下错误:
No route matches {:action=>"show", :controller=>"animal"}
有关更多信息,请参阅下面我的控制器:(静态页面)
class StaticPagesController < ApplicationController
def help
end
def league
end
def contact
end
def about
end
def index
end
def show
end
end
Run Code Online (Sandbox Code Playgroud)
动物控制器
class AnimalController < ApplicationController
def new
@animal = Animal.new
end
def show
@animal = Animal.new
end
end
Run Code Online (Sandbox Code Playgroud)
而且,我跑了rake routes我得到:
animal_index GET /animal(.:format) animal#index
POST /animal(.:format) animal#create
new_animal GET /animal/new(.:format) animal#new
edit_animal GET /animal/:id/edit(.:format) animal#edit
animal GET /animal/:id(.:format) animal#show
PUT /animal/:id(.:format) animal#update
DELETE /animal/:id(.:format) animal#destroy
root / static_pages#index
help /help(.:format) static_pages#help
about /about(.:format) static_pages#about
contact /contact(.:format) static_pages#contact
league /league(.:format) static_pages#league
/animal(.:format) animal#new
Run Code Online (Sandbox Code Playgroud)
有没有人知道如何让我的网站恢复,并允许自己在 URI /animal/[:id] 下查看动物数据库中的对象?
让它resources :animals代替resources :animal
rake routes 应该显示以下输出:
animals GET /animals(.:format) animals#index
POST /animals(.:format) animals#create
new_animal GET /animals/new(.:format) animals#new
edit_animal GET /animals/:id/edit(.:format) animals#edit
animal GET /animals/:id(.:format) animals#show
PUT /animals/:id(.:format) animals#update
DELETE /animals/:id(.:format) animals#destroy
Run Code Online (Sandbox Code Playgroud)