【问题标题】:dynamic rails helpers (eg. link_to method, method)动态 Rails 助手(例如 link_to 方法、方法)
【发布时间】:2011-11-24 05:56:05
【问题描述】:

我想知道如何为我的 rails 助手获得一些动态能力:

<h3><%= link_to object.name, ("#{object.class_path.to_s}")_path(object) %></h3>

在这种情况下,将对象的类放入链接中。我对如何在辅助方法中抛出方法感到困惑。

任何建议将不胜感激!

【问题讨论】:

  • 听起来您已经解决了它,但为了将来参考您的原始方法,您必须像这样使用发送:link_to object.name, send("#{object.class_path.to_s}_path", object)
  • 啊,是“发送”,明白了。想知道这是如何工作的。感谢您的提醒。

标签: ruby-on-rails ruby-on-rails-3 dynamic helpers


【解决方案1】:

您正在尝试链接到对象的实例?

<%= link_to object.name, object %>

Rails 可以从中构造一个#show 链接。

对于更复杂/嵌套的情况,您可以使用polymorphic_path

<%= link_to object.name, polymorphic_path([:edit, @user, object]) %>

...作为edit_user_#{object.class}_path(@user,object)的同义词

【讨论】:

  • 我喜欢那个多态路径。为小费干杯!
  • polymorphic_path 是更好的选择,我在网上搜索这个话题。我认为@eric 只是忘记给我们documentation的链接
【解决方案2】:

我似乎已经通过这样做解决了这个问题:

<%= link_to object.name, url_for(object) %>

使用url_for 代替something_path 是否存在任何性能或可用性问题?有什么区别吗?

【讨论】:

    猜你喜欢
    • 2015-10-18
    • 2017-05-25
    • 2011-08-14
    • 1970-01-01
    • 2013-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-10
    相关资源
    最近更新 更多