0

我一直在尝试从外部读取导轨路由并且失败得很惨。我相信我想做的是非常基本的,但无论出于何种原因我都无法弄清楚。这是情况。

我希望我的网址读取 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 => '' 但是当我访问我的网站时,url 看起来是一样的。那是因为我视图上的代码看起来像

<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

感谢您的帮助!

4

2 回答 2

1

在我看来,您应该阅读一些关于 Routes 及其在 Rails 宏伟计划中的作用的内容

你可以从这里开始 http://guides.rubyonrails.org/routing.html

您也可以查看一些 RailCast 以完全掌握路线的含义。这有点棘手,但是当您理解它时,它就完全有意义了

如果您希望“地图”链接转到特定地图,您应该更改

<%= link_to "Map", :controller => :maps, :action => :map %>

<%= link_to "Map", @map %>

其中@map 是您在控制器中初始化的该映射的变量

如果您希望“地图”链接转到地图索引页面并显示所有地图,您应该更改

<%= link_to "Map", :controller => :maps, :action => :map %>

<%= link_to "Map", maps_path %>
于 2013-07-04T17:27:53.060 回答
0

这就是 REST 资源和 URL 的定义方式。在这里阅读

routes.rb文件中执行以下操作时:

resource :maps

您正在告诉 rails 为您生成以下操作的默认路由:

  • 索引 =>GET /maps
  • 显示 =>GET /maps/1
  • 新 =>GET /maps/new
  • 创建 =>POST /maps
  • 编辑 =>GET /maps/1
  • 更新 =>PUT /maps/1
  • 销毁=>DELETE /maps/1
于 2013-07-04T17:23:12.963 回答