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

时间:2008-09-21 21:12:56

标签: ruby-on-rails ruby helper

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

<%= my_cool_helper "something", form %>

应该把结果放在

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

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

5 个答案:

答案 0 :(得分:23)

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

请记住,像link_to等现有的铁轨助手只输出字符串。您可以将字符串连接在一起并返回(如果事情很简单,那就是我大部分时间都在做的事情。)

EG:

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

如果您正在做更复杂的事情,您可以将该代码部分放入,并让您的助手调用render :partial

如果你做的事情比那更复杂,那么你可能想看看errtheblog的block_to_partial助手,这很酷

答案 1 :(得分:11)

到目前为止,我提出的最好的是:

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

有更好的方法吗?

答案 2 :(得分:2)

如果要缓冲除字符串之外的其他输出,则可以使用concat而不是+。 看到这个 - http://thepugautomatic.com/2013/06/helpers/

答案 3 :(得分:0)

def output_siblings
  div1 = tag.div 'some content'
  div2 = tag.div 'other content'

  div1 + div2
end

只是在这里简化其他一些答案。

答案 4 :(得分:0)

这对我有用。

def format_paragraphs(text)
  text.split(/\r?\n/).sum do |paragraph|
    tag.p(paragraph)
  end
end
相关问题