【问题标题】:rails route string concat methodrails route string concat 方法
【发布时间】:2014-04-09 06:50:38
【问题描述】:

我有路线...foo_pathfoo_bar_pathlink_to 中的简单助手。

在同一个链接中,我正在尝试定义 2 个单独的路径...

@foo 可能属于 Foo 类,也可能属于 FooBar 类。它是多态的。所以,我想通过某种@foo.class.name.underscore 调用来构建路径,以预先添加到_path

我不能用link_to 'foo', "/#{@foo.class.name.underscore}/:id" 直接发送它,因为我必须用它发送一些参数,所以只能使用路由助手。除非你知道如何用那个臭虫发送参数......这可能会简化事情。

这有意义吗?

【问题讨论】:

    标签: ruby-on-rails ruby helper


    【解决方案1】:

    Rails 将根据对象类型推断路径名。如果你传递一个Foo 对象,它将使用foo_path。如果你传递一个FooBar 对象,它将使用foo_bar_path

    <%= link_to 'foo', foo %>
    

    假设fooFooFooBar 对象之一。

    我在名为 "Polymorphic Routes" 的博文中对此进行了深入介绍。

    【讨论】:

    • 你是对的!不幸的是,在简化我的问题时,一些上下文丢失了......我实际上是在尝试链接到多态对象。 &lt;%= link_to p.name, player_player_positions_path(player, position_id: p.id), data: {position: p.id}, class: 'pos', title: 'add position', remote: true, method: :post %&gt;
    • 在这种情况下...第一个player也可以是game_player
    • @Mallanaga 听起来你想要的是&lt;%= link_to 'player', [player, :player_positions] %&gt;
    • 我也知道这种语法,但没有想到这种情况!它确实工作得很好,但我该如何添加参数呢?
    • 如果我愿意/可以使用表单,这会变得更容易......这似乎真的只在 link_to 模式下工作......
    猜你喜欢
    • 2016-01-14
    • 1970-01-01
    • 1970-01-01
    • 2019-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多