Ruby on rails 在RubyonRails中使用select标记将select设置为nil

Ruby on rails 在RubyonRails中使用select标记将select设置为nil,ruby-on-rails,ruby,ruby-on-rails-3,ruby-on-rails-3.2,Ruby On Rails,Ruby,Ruby On Rails 3,Ruby On Rails 3.2,您好,我正在尝试在ruby的select()中设置“:selected=>nil”或设置为变量的值,如“:selected=>val”,但这两种方式都不起作用。请大家告诉我下面的代码片段有什么问题。 谢谢 nil)%> val)%> 其中,map1[:field_name]是一个字符串 和map1[:field_code]返回一个散列 val是一个包含哈希值之一的变量。 尝试在选项周围加上花括号: {:selected => val} 你的代码片段工作得很好。用它来测试 hash =

您好,我正在尝试在ruby的select()中设置
“:selected=>nil”
或设置为变量的值,如
“:selected=>val”
,但这两种方式都不起作用。请大家告诉我下面的代码片段有什么问题。 谢谢

nil)%>
val)%>
其中,map1[:field_name]是一个字符串
和map1[:field_code]返回一个散列
val是一个包含哈希值之一的变量。

尝试在选项周围加上花括号:

 {:selected => val}

你的代码片段工作得很好。用它来测试

hash = { "n" => "no", "y" => "yes" }
val = "yes"
ActionView::Base::new.select("name", "id", hash, selected: val)
它创造了:

<select id="name_id" name="name[id]">
   <option value="no">n</option>
   <option selected="selected" value="yes">y</option>
</select>

N
Y

您的
val
map1[:field\u code]
值不完全匹配,或者如果启动Rails应用程序并检查表单以查看
selected=“selected”
,这可能是Rails之外的问题(如您的浏览器)。

val是否包含“id”?这里有一个适合我的格式:
@party.restaurant\u id})%>
我是ruby on rails的新手,但是我的val不包含任何id。它像这样映射1[:field\u code]={“n”=>“no”,“y”=>“yes”}和val将有=yes任何方法的最后一个参数都可以是自由形式的散列,不需要花括号。请记住,所选
选项的类型必须完全匹配,因此如果
val
2
,并且
map1
数据中的条目为
“2”
,则它们不相同。
map1[:field_codes]
的内容是什么?是的,所以我的输出看起来像这样,我还检查了val是否包含准确的值。谢谢
<select id="name_id" name="name[id]">
   <option value="no">n</option>
   <option selected="selected" value="yes">y</option>
</select>