Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails 3选择不生成DOM元素的标签_Ruby On Rails_Ruby On Rails 3_Haml - Fatal编程技术网

Ruby on rails Rails 3选择不生成DOM元素的标签

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

我试图在Rails 3中使用
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()
来代替(等效)。