2008-09-21 37 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

相關問題