能否在Rails的link_to方法中使用变量实现DRY代码?
Rails动态生成link_to路径的解决方案
你遇到的问题是直接拼接字符串会被当成静态URL,而不是调用Rails内置的路径辅助方法。解决办法是用Ruby的send方法动态调用对应的_path方法:
<%= link_to users, send("#{examples}_path") %>
原理很简单:Rails的路径辅助方法(比如users_path)本质是视图上下文里的方法,send可以接收方法名字符串,帮你动态执行这个方法,这样就能根据变量examples的值自动生成对应的路径了。
如果需要生成带参数的路径(比如单条资源的show页面),直接在send后面加参数就行:
# 假设examples的值是"user",要传递user的id <%= link_to user.name, send("#{examples}_path", user.id) %>
这样就能实现DRY代码,不用为不同资源重复写几乎一样的link_to代码。
内容的提问来源于stack exchange,提问作者nicecoding521235
相关产品推荐
相关产品推荐

