加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails-3 – Rails _path helper生成路径,格式不是id

发布时间:2020-12-17 02:33:28 所属栏目:百科 来源:网络整理
导读:在我的routes.rb我有: resources :aquariums do resources :management_roles resources :graphs resources :animals end get 'aquarium',to: 'aquariums#show',:as = :aquarium 最后得到的原因是我在我的应用程序中有“当前水族馆”的概念.如果,例如,curre
在我的routes.rb我有:

resources :aquariums do
    resources :management_roles
    resources :graphs
    resources :animals
  end
  get 'aquarium',to: 'aquariums#show',:as => :aquarium

最后得到的原因是我在我的应用程序中有“当前水族馆”的概念.如果,例如,current_aquarium设置为1,那么在我的控制器的’show’动作’/ aquarium’获得与’/ aquariums / 1’相同的渲染,代码类似

@aquarium_id = params[:id] || current_aquarium.id

现在,我假设这是由于这个不同的路由,这段代码:

<%= link_to aquarium.name,aquarium %>

要么

<%= link_to aquarium.name,aquarium_path(aquarium) %>

生成这样的路径:

/aquarium.1

我通常期望的地方:

/aquariums/1

对?

每个请求……这是rake路由| grep aquar产量:
(我假设这是最后一条混乱的路线,但我认为它会按顺序处理这些.而且,仅仅是因为我最初在顶部有这条路线.把它移到底部假设它会解决的.)

aquarium_management_roles GET    /aquariums/:aquarium_id/management_roles(.:format)          management_roles#index
                              POST   /aquariums/:aquarium_id/management_roles(.:format)          management_roles#create
 new_aquarium_management_role GET    /aquariums/:aquarium_id/management_roles/new(.:format)      management_roles#new
edit_aquarium_management_role GET    /aquariums/:aquarium_id/management_roles/:id/edit(.:format) management_roles#edit
     aquarium_management_role GET    /aquariums/:aquarium_id/management_roles/:id(.:format)      management_roles#show
                              PUT    /aquariums/:aquarium_id/management_roles/:id(.:format)      management_roles#update
                              DELETE /aquariums/:aquarium_id/management_roles/:id(.:format)      management_roles#destroy
              aquarium_graphs GET    /aquariums/:aquarium_id/graphs(.:format)                    graphs#index
                              POST   /aquariums/:aquarium_id/graphs(.:format)                    graphs#create
           new_aquarium_graph GET    /aquariums/:aquarium_id/graphs/new(.:format)                graphs#new
          edit_aquarium_graph GET    /aquariums/:aquarium_id/graphs/:id/edit(.:format)           graphs#edit
               aquarium_graph GET    /aquariums/:aquarium_id/graphs/:id(.:format)                graphs#show
                              PUT    /aquariums/:aquarium_id/graphs/:id(.:format)                graphs#update
                              DELETE /aquariums/:aquarium_id/graphs/:id(.:format)                graphs#destroy
             aquarium_animals GET    /aquariums/:aquarium_id/animals(.:format)                   animals#index
                              POST   /aquariums/:aquarium_id/animals(.:format)                   animals#create
          new_aquarium_animal GET    /aquariums/:aquarium_id/animals/new(.:format)               animals#new
         edit_aquarium_animal GET    /aquariums/:aquarium_id/animals/:id/edit(.:format)          animals#edit
              aquarium_animal GET    /aquariums/:aquarium_id/animals/:id(.:format)               animals#show
                              PUT    /aquariums/:aquarium_id/animals/:id(.:format)               animals#update
                              DELETE /aquariums/:aquarium_id/animals/:id(.:format)               animals#destroy
                    aquariums GET    /aquariums(.:format)                                        aquariums#index
                              POST   /aquariums(.:format)                                        aquariums#create
                 new_aquarium GET    /aquariums/new(.:format)                                    aquariums#new
                edit_aquarium GET    /aquariums/:id/edit(.:format)                               aquariums#edit
                     aquarium GET    /aquariums/:id(.:format)                                    aquariums#show
                              PUT    /aquariums/:id(.:format)                                    aquariums#update
                              DELETE /aquariums/:id(.:format)                                    aquariums#destroy
                     aquarium GET    /aquarium(.:format)                                         aquariums#show

提前致谢!

格雷格

解决方法

改变最后一条路线:

get 'aquarium',:as => :aquarium

对此:

get 'aquarium',:as => :current_aquarium

问题是你必须命名相同的路由:

aquarium GET    /aquariums/:id(.:format)    aquariums#show
aquarium GET    /aquarium(.:format)         aquariums#show

如果您进行上述更改,那么当您将这些链接发送到呼叫时,第二条路线将不匹配……现在,第二条路线正在匹配,就像路线所说的那样使用您的参数作为:格式.

如果您确实进行了此更改,则可能需要调整一些内容,如果您有意链接到’current_aquarium’.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读