我想在ruby中构建一个动态路径路径,类似这样
route = (a == a) ? "foo" : (b == b) ? "bar" : "default"
link_to(event.try(:name), admin_"#{route}"_path('params goes here')
我非常清楚我所尝试的是错的。它应该使用class_eval或define_method进行动态方法创建我不确定。另外,我不熟悉这些概念。我可以谷歌,但需要很长时间才能找到解决方案。 任何人,请帮我快速解决这个问题。提前谢谢。
答案 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
始终是真的。