从Rails Helper返回多个标签的最佳方法是什么?

时间:2020-03-06 14:30:58  来源:igfitidea点击:

我想创建一个隐藏字段,并在一个帮助器中创建一个链接,然后将两者都输出到我的erb中。

<%= my_cool_helper "something", form %>

应该把结果放出来

link_to "something", a_path
form.hidden_field "something".tableize, :value => "something"

助手的定义是什么样的?真正的link_to和form.hidden_​​field的细节并不重要。重要的是,如何从两个不同的调用返回输出。

解决方案

到目前为止,我想出的最好的方法是:

def my_cool_helper(name, form)
  out = capture { link_to name, a_path }
  out << capture { form.hidden_field name.tableize, value => 'something' }
end

有没有更好的办法?

有几种方法可以做到这一点。

请记住,现有的rails助手(如link_to等)仅输出字符串。我们可以将字符串连接在一起并返回该字符串(如果事情很简单,这是我大部分时间所做的事情)。

例如:

link_to( "something", something_path ) +  #NOTE THE PLUS FOR STRING CONCAT
form.hidden_field('something'.tableize, :value=>'something')

如果我们正在做更复杂的事情,则可以将该代码放在一部分中,然后让助手调用render:partial

如果我们正在做的事情比这还要复杂,那么我们可能想看看errtheblog的block_to_partial帮助器,这很酷