在Ruby中构造动态路径路径

时间:2015-04-17 15:55:26

标签: ruby-on-rails ruby

我想在ruby中构建一个动态路径路径,类似这样

    route = (a == a) ? "foo" : (b == b) ? "bar" : "default"
    link_to(event.try(:name), admin_"#{route}"_path('params goes here')

我非常清楚我所尝试的是错的。它应该使用class_eval或define_method进行动态方法创建我不确定。另外,我不熟悉这些概念。我可以谷歌,但需要很长时间才能找到解决方案。 任何人,请帮我快速解决这个问题。提前谢谢。

1 个答案:

答案 0 :(得分:3)

这非常简单:

send("admin_#{route}_path", params)

您可能希望将其包装在辅助方法中以进行清理:

def admin_path_for_ab(a, b, params = nil)
  route =
    if (a == 'a')
       "foo"
    elsif (b == 'b')
       "bar"
    else
       "default"
    end

  send("admin_#{route}_path", params)
end

作为一个注释,嵌套三元组(x ? y : z)通常是一个坏主意,而a == a始终是真的。