2008-09-21 53 views
26

我想创建一个隐藏的字段,并在一个助手中创建一个链接,然后输出到我的erb。从Rails Helper返回多个标记的最佳方法是什么?

<%= my_cool_helper "something", form %> 

应该放出来的

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

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

+1

记住,[因为Rails的3](http://railscasts.com/episodes/204-xss-protection-in-rails-3?view=asciicast),你需要为字符串标记为'html_safe `以避免XSS攻击。 – asymmetric 2012-06-15 13:31:48

回答

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帮手,如果你希望缓冲其它输出字符串,除了那么你可以使用这是很酷

+0

不错,简单的答案!加上FTW! – Sixty4Bit 2008-09-21 21:26:38

10

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

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

有没有更好的办法?

+0

你的回答非常帮助我。谢谢! – 2013-02-28 23:04:30