2010-12-10 44 views
5

我試圖使用Rails的3. select_tag幫助我開始用一個非常簡單的例子,直from the documentation複製:的Rails 3 select_tag沒有產生DOM元素

它似乎產生正確的標記,但選擇不起作用 - 點擊它什麼都不做。

爲了比較,我在HAML中創建了相同的選擇。 這工作正常。下面是兩個代碼:

-# The select_tag version 
= select_tag "count", "<option>1</option><option>2</option><option>3</option><option>4</option>" 

-# The HAML version 
%select{:name => "count", :id => "count"} 
    %option 1 
    %option 2 
    %option 3 
    %option 4 

select_tag似乎產生一個字符串的選項,但不是DOM元素 - 螢火蟲,他們只是灰色的,沒有語法高亮像的DOM元素工作選擇由HAML生產。

這是怎麼回事?

回答

5

在我發佈問題之前,我想出了答案:字符串需要有.html_safe調用它。

查看源顯示,Rails已經打開所有的<>&lt;&gt;,因爲它現在默認轉義字符串。 html_safe說「沒有,相信我,這個可以顯示爲HTML。」

因此,這使得它的工作:

= select_tag "count", "<option>1</option><option>2</option><option>3</option><option>4</option>".html_safe 

,如果他們更新的文件這將是很好,但是,嘿,至少答案是快速搜索現在這裏。 :)

+0

宇從來不知道這一點。謝謝大家 – corroded 2011-01-19 10:59:19

+0

另一個提示:確保你傳遞給選項的*整個*字符串是.html_safe - 例如,如果你調用'string1 + some_array.map {}。join()。html_safe',不起作用,因爲.html_safe僅在最後一個表達式上調用。將它放置在parens中,或者使用'raw()'來代替(相當於)整個事物。 – trisweb 2012-05-31 20:36:12