我在 DB 中有一个字段(字符串),如果选中,则存储从复选框获取的值列表:
例子:
checkbox1 [X] //Value 1
checkbox2 [ ] //Value 2
checkbox3 [X] //Value 3
checkbox4 [X] //Value 4
checkbox5 [ ] //Value 5
它在数据库中存储字符串“--- -'1' -'3' -'4'”(不带双引号)我不知道为什么,因为在我的表单中我有:
<% SoProfile::LANGUAGES.each do |key, value| %>
<div class="fluid">
<%= f.label :languages,class: "checkbox" do %>
<%= key %> <%= f.check_box :languages, {:multiple => true}, value, nil %>
<% end %>
</div>
<% end %>
在模型中(我不想为此使用数据库表):
LANGUAGES = { Espanol: 1, Ingles: 2, Portugues: 3, Italiano: 4, Mandarin: 5 }
无论如何,对于上面的示例,它存储该字符串“--- -'1' -'3' -'4'”,我想根据语言显示国家标志,而不是放置语言名称。
我为此创建了一个辅助方法:
def insert_languages(string)
string.scan(/\d/).each do |i|
case i
when i == "1"
content_tag(:div,"",class: 'flag flag-co')
end
end
end
在我看来,这就是所谓的:
<tr>
<td>Idiomas <br />
<%= insert_languages(@so_profile.languages) %>
</td>
</tr>
但是辅助方法不会从 .scan 传递,而是直接打印出哈希 ["1" "3" "4"],它永远不会到达案例代码,就像字符串中有返回一样。扫描(.. 代码行。
如何防止 rails 返回哈希值并打印标志?