【问题标题】:Rails 3.1 app has parent & child ids wrong way round in route helperRails 3.1 应用程序在路由助手中有错误的父子 ID
【发布时间】:2011-11-12 08:09:42
【问题描述】:

我有一个带有父对象 Mom 和子对象 Kid 的 Rails 3.1 应用程序。支架尽可能地生成而不是手工编码。在/app/views/kids/_kid.html.erb我加了

<%= mom_kid_path(kid) %>

对于一个 ID 为 1 的妈妈和一个 ID 为 2 的孩子,这显示的是 /moms/2/kids/1,它的 ID 方向错误。

我在/config/routes.rb 中只有

resources :moms do
  resources :kids
end

我做错了什么?

该应用的代码位于https://github.com/dominicsayers/momkid。我创建应用程序的具体步骤在这里:http://blog.dominicsayers.com/2011/08/24/howto-create-a-simple-parent-child-form-in-rails-3-1/。我很乐意添加所需的任何其他具体信息。

【问题讨论】:

    标签: ruby-on-rails routes ruby-on-rails-3.1 helpers


    【解决方案1】:

    编辑/回答:

    Rails 在使用 _path 帮助器时需要 mom 和 child 变量。所以它应该看起来更像这样:

    <%= mom_kid_path(kid.mom, kid) %>
    

    原始答案...有点误解了这个问题,但它有一个有用的链接:

    这是 rails 的默认行为,它不是向后的。

    您的嵌套路由基本上是这样写的:“每个资源妈妈都有一组名为 kids 的子/嵌套资源”。

    这个页面是一个很好的资源。我已经链接到嵌套路由部分,所以也许它可以帮助你解决这个问题。 Rails Routing

    【讨论】:

    • 我并不是说这些对象是错误的。 /moms/n/kids/m 是正确的。我是说 id 是错误的:数据库中妈妈的 id 是 1,孩子的 id 是 2,但路径是 /moms/2/kids/1。我已经在问题中澄清了这一点 - 感谢您的意见。
    • 啊,明白了。我相信你必须把妈妈和孩子都传给那个方法。你可以试试 mom_kid_path(mom,kid) 吗?而不是仅仅传递孩子?
    • Msencenb,你就是那个男人。事实上,我需要 mom_kid_path(kid.mom, child) 因为没有可用的 mom 变量 - 如果您对此效果添加答案,我会接受。
    • 很高兴它的修复!我已经编辑了上面的答案以反映你是如何修复它的:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-13
    • 1970-01-01
    • 2015-09-19
    • 1970-01-01
    • 2011-06-01
    • 1970-01-01
    相关资源
    最近更新 更多