静态路由不再工作,传递id

时间:2013-08-14 02:54:14

标签: ruby-on-rails

我有这样的路线

/状态/亚利桑那/单元/ AZ22

我想删除STATE和UNIT的控制器名称并获取这样的路由

/亚利桑那/ AZ22

发现这个代码非常好用

resources :states, :except => [:index ], :path => '/' do
    resources :units, :except => [:index ], :path => '/'
  end

但是现在我的静态路径不起作用,因为它认为它是一个状态。我在静态页面上有一个状态列表。

Error: Couldn't find State with id=about

Code throwing error : def set_state
         @state = State.friendly.find(params[:id])
      end

这些是我的静态页面路由

  match '/contact', to: 'static_pages#contact', via: 'get'
  match '/about', to: 'static_pages#about', via: 'get'
  root 'static_pages#home'

有没有办法修复路线? 或者我是否使用静态页面错误,因为我要向他们提供状态列表?

1 个答案:

答案 0 :(得分:0)

路由按照指定的顺序进行匹配。因此,按照以下方式组织您的路线并尝试一下:

root 'static_pages#home'
match '/contact', to: 'static_pages#contact', via: 'get'
match '/about', to: 'static_pages#about', via: 'get'

resources :states, :except => [:index ], :path => '/' do
  resources :units, :except => [:index ], :path => '/'
end