从 Rails Helper 返回多个标签的最佳方法是什么?
-
02-07-2019 - |
题
我想创建一个隐藏字段并在一个助手中创建一个链接,然后将两者输出到我的 erb。
<%= my_cool_helper "something", form %>
应该输出结果
link_to "something", a_path
form.hidden_field "something".tableize, :value => "something"
助手的定义是什么样的?link_to 和 form.hidden_field 的细节并不重要。重要的是,如何返回两个不同调用的输出。
解决方案
做这件事有很多种方法。
请记住,现有的 Rails 助手喜欢 link_to
, 等等,只输出字符串。您可以将字符串连接在一起并返回(如果事情很简单,这就是我大多数时候所做的)。
例如:
link_to( "something", something_path ) + #NOTE THE PLUS FOR STRING CONCAT
form.hidden_field('something'.tableize, :value=>'something')
如果您正在做更复杂的事情,您可以将该代码放入部分代码中,然后让您的助手调用 render :partial
.
如果你正在做比这更复杂的事情,那么你可能想看看 errtheblog 的 块到部分 助手,这很酷
其他提示
到目前为止,我想出的最好的办法是:
def my_cool_helper(name, form)
out = capture { link_to name, a_path }
out << capture { form.hidden_field name.tableize, value => 'something' }
end
有没有更好的办法?
如果你想缓冲除字符串之外的其他输出,那么你可以使用 concat
代替 +
。看到这个 - http://thepugautomatic.com/2013/06/helpers/
不隶属于 StackOverflow