Rails路由问题和问题

时间:2013-07-04 17:15:45

标签: ruby-on-rails ruby-on-rails-3 routes

我一直试图从外面读取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

感谢您的帮助!

2 个答案:

答案 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为您生成默认路由以执行以下操作:

  • index =&gt; GET /maps
  • show =&gt; GET /maps/1
  • new =&gt; GET /maps/new
  • create =&gt; POST /maps
  • edit =&gt; GET /maps/1
  • update =&gt; PUT /maps/1
  • destroy =&gt; DELETE /maps/1