Ruby on rails Rails 3选择不生成DOM元素的标签
我试图在Rails 3中使用Ruby on rails Rails 3选择不生成DOM元素的标签,ruby-on-rails,ruby-on-rails-3,haml,Ruby On Rails,Ruby On Rails 3,Haml,我试图在Rails 3中使用select_标记helper。我从一个非常基本的例子开始,直接复制: 它似乎生成了正确的标记,但选择不起作用-单击它什么也不做 为了比较,我在HAML中创建了相同的select这很好。以下是这两种方法的代码: -# The select_tag version = select_tag "count", "<option>1</option><option>2</option><option>3</o
select_标记helper。我从一个非常基本的例子开始,直接复制:
它似乎生成了正确的标记,但选择不起作用-单击它什么也不做
为了比较,我在HAML中创建了相同的select这很好。以下是这两种方法的代码:
-# 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
-#选择标签版本
=选择标签“计数”、“1234”
-#汉密尔顿版本
%选择{:name=>“count”,:id=>“count”}
%选择1
%选择2
%选择3
%选择4
select_标记
似乎以字符串形式生成选项,但不是作为DOM元素—在Firebug中,它们只是灰色的,不像HAML生成的工作选择中的DOM元素那样语法高亮显示
这是怎么回事?我在发布问题之前找到了答案:字符串需要调用.html\u safe。
查看源代码显示Rails已将所有
转换为
和
,因为它现在默认转义字符串html\u safe
说“不,真的,相信我,这个可以显示为html。”
因此,这使它起作用:
= select_tag "count", "<option>1</option><option>2</option><option>3</option><option>4</option>".html_safe
=选择标签“count”,“1234”.html\u safe
如果他们能更新文档就好了,不过,至少现在可以在这里快速搜索答案了。:) 另一个技巧:确保传递给options的整个字符串是.html\u safe-对于ex,如果调用string1+some\u array.map{}.join().html\u safe
,它将不起作用,因为.html\u safe只在最后一个表达式上被调用。将其放在parens中,或者使用raw()
来代替(等效)。