我一直试图从外面读取rails路由并且悲惨地失败。我相信我想做的事情非常基本,但无论出于什么原因,我都无法理解。情况就是这样。
我希望我的网址能够阅读www.example.com/maps而不是他们现在正在做的事www.example.com/maps/map这是控制器然后查看名称。
我的路线如下所示。
homepages GET /homepages(.:format) homepages#index
POST /homepages(.:format) homepages#create
new_homepage GET /homepages/new(.:format) homepages#new
edit_homepage GET /homepages/:id/edit(.:format) homepages#edit
homepage GET /homepages/:id(.:format) homepages#show
PUT /homepages/:id(.:format) homepages#update
DELETE /homepages/:id(.:format) homepages#destroy
root / homepages#index
maps GET /maps(.:format) maps#index
POST /maps(.:format) maps#create
new_map GET /maps/new(.:format) maps#new
edit_map GET /maps/:id/edit(.:format) maps#edit
map GET /maps/:id(.:format) maps#show
PUT /maps/:id(.:format) maps#update
DELETE /maps/:id(.:format) maps#destroy
work_index GET /work(.:format) work#index
POST /work(.:format) work#create
new_work GET /work/new(.:format) work#new
edit_work GET /work/:id/edit(.:format) work#edit
work GET /work/:id(.:format) work#show
PUT /work/:id(.:format) work#update
DELETE /work/:id(.:format) work#destroy
contact_index GET /contact(.:format) contact#index
我尝试过做类似资源的事情:maps,:path => ''但是当我访问我的网站时,网址显示相同。这是因为我的视图上的代码看起来像是
<li class="current_page_item"><%= link_to "Bio", :controller => :homepages, :action => :index %></li>
<li><%= link_to "Work", :controller => :work, :action => :experience %></li>
<li><%= link_to "Map", :controller => :maps, :action => :map %></li>
<li><%= link_to "Contact", :controller => :contact, :action => :email %></li>
或者是因为我的路线错了?
我的路线文件目前看起来像
Me::Application.routes.draw do
resources :homepages
root :to => 'homepages#index'
resources :maps
resources :work
resources :contact
resources :media
感谢您的帮助!
答案 0 :(得分:1)
在我看来,你应该阅读一些关于路线及其在Rails宏观方案中的作用
你可以从这里开始 http://guides.rubyonrails.org/routing.html
您还可以查看一些RailCast,以便完全掌握路线的含义 这有点棘手,但是当你明白它完全有道理时
如果你想要&#34; Map&#34;链接转到特定地图,您应该更改
<%= link_to "Map", :controller => :maps, :action => :map %>
要
<%= link_to "Map", @map %>
其中@map是您在控制器中初始化的地图的变量
如果你想要&#34; Map&#34;链接转到地图索引页面并显示您应该更改
的所有地图<%= link_to "Map", :controller => :maps, :action => :map %>
要
<%= link_to "Map", maps_path %>
答案 1 :(得分:0)
这就是REST资源和URL的定义方式。阅读here
在routes.rb
文件中执行以下操作时:
resource :maps
您告诉rails为您生成默认路由以执行以下操作:
GET /maps
GET /maps/1
GET /maps/new
POST /maps
GET /maps/1
PUT /maps/1
DELETE /maps/1