【问题标题】:How can I route a nested resource to an alias?如何将嵌套资源路由到别名?
【发布时间】:2012-06-29 01:13:06
【问题描述】:

我知道不建议在嵌套路由中深入超过 1 层,但这就是我所拥有的:

  resources :partners do
    resources :recommend_partners do
      resources :rec_partner_comments
    end
  end

有没有办法可以调用别名来使用 name_route

所以不要使用

new_partner_recommend_partner_rec_partner_comments

我会使用类似的东西

new_comment_on_pr

只是一个想法......

【问题讨论】:

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


    【解决方案1】:

    你总是可以创建一个辅助函数

    def new_comment_on_pr(*args)
      new_partner_recommend_partner_rec_partner_comments(*args)
    end
    

    您还知道 Rails 中更清晰的路由路径语法吗?而不是

    partner_recommend_partner_rec_partner_comments(partner, recommend_partner)
    

    你可以写

    [partner, recomment_partner, :comments]
    

    【讨论】:

    • [partner, recomment_partner, :comments] 会给我索引!辅助功能适用于我的其他路线,但我不知道为什么它不适用于这条路线。如果我在节目中使用:new_partner_recommend_partner_rec_partner_comment,或者辅助功能,它仍然给我同样的错误:未定义的方法`new_partner_recommend_partner_rec_partner_comment'
    • 并且,作为额外信息,我从控制台中的 rake 路由中获得了该路由,因此它不应该呈现和错误...至少不是未定义的方法错误...跨度>
    • 我给你的例子确实会给你索引。要获得你想要的路径,它应该看起来像[:new, partner, recommend_partner, :rec_partner_comment]。无论如何,如果rake routes 显示此路径,那么助手应该可用。我注意到您的示例包含 new_partner_recommend_partner_rec_partner_comments 而不是 new_partner_recommend_partner_rec_partner_comment (注意末尾的 S)。也许这就是原因?
    • 不,我只是第一次写错了,最后没有S...但是[:new,partner,recommend_partner,:rec_partner_comment]有效!我只是很困惑为什么我的 rake 路线中显示的路线给了我和未定义的方法错误..因为我从控制台复制并粘贴了所以我现在完全一样...
    猜你喜欢
    • 2019-10-18
    • 1970-01-01
    • 1970-01-01
    • 2013-01-31
    • 1970-01-01
    • 2014-07-25
    • 2014-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多