我目前有3个HTML选择:货币,时区和国家。一种货币看起来像这样:
<%= f.select(:currency_code, '
<option selected>Select Currency</option>
<option value="AUD">(AUD) Australian Dollar</option>
<option value="BRL">(BRL) Brazilian Real</option>
<option value="CAD">(CAD) Canadian Dollar</option>
<option value="CZK">(CZK) Czech Koruna</option>
<option value="DKK">(DKK) Danish Krone</option>
<option value="EUR">(EUR) Euro</option>
<option value="HKD">(HKD) Hong Kong Dollar</option>
<option value="HUF">(HUF) Hungarian Forint</option>
<option value="ILS">(ILS) Israeli New Sheqel</option>
<option value="JPY">(JPY) Japanese Yen</option>
<option value="MYR">(MYR) Malaysian Ringgit</option>
<option value="MXN">(MXN) Mexican Peso</option>
<option value="NOK">(NOK) Norwegian Krone</option>
<option value="NZD">(NZD) New Zealand Dollar</option>
<option value="PHP">(PHP) Philippine Peso</option>
<option value="PLN">(PLN) Polish Zloty</option>
<option value="GBP">(GBP) Pound Sterling</option>
<option value="SGD">(SGD) Singapore Dollar</option>
<option value="SEK">(SEK) Swedish Krona</option>
<option value="CHF">(CHF) Swiss Franc</option>
<option value="TWD">(TWD) Taiwan New Dollar</option>
<option value="THB">(THB) Thai Baht</option>
<option value="TRY">(TRY) Turkish Lira</option>
<option value="USD">(USD) U.S. Dollar</option>'.html_safe, {}, { class: "form-control" }) %>
我意识到我可以使用options_for_select
等,以便可以使用selected:
。但是,是否可以使用如上所述的选项字符串+ html_safe
来设置所选值?
现在,如果在表单重新呈现该选项时用户选择BRL
作为其币种,则该选项将不会被选择。
编辑: 不知道为什么我不知道其他地方对此有何回应时,为什么我会对此表示不满。这些问题中至少有100种,但都没有解决我所引用的问题。
答案 0 :(得分:1)
您正在使它变得比实际需要的更加复杂。您甚至无需显式调用options_for_select或使用.html_safe
。
要从任意列表中创建一个选择,只需传递一个数组即可:
<%= f.select(:currency_code, ["AUD", "BRL"]) %>
如果您想要不同的值和标签,则传递一个成对的数组:
<%= f.select(:currency_code, [["(AUD) Australian Dollar", "AUD"], ["(BRL) Brazilian Real", "BRL"]]) %>
如果您将货币声明为哈希,则可以使用以下方法将其转换为一组货币对:
hash = { "AUD" => "(AUD) Australian Dollar", "BRL" => "(BRL) Brazilian Real" }
hash.map { |value, label| [label, value] }
答案 1 :(得分:1)
我同意将选项列表作为纯字符串传递给class SomeClass<T extends (U extends any ? Constrained<T> : unknown), U = any> {
prop!: Constrained<T>;
method() {
foo(this.prop); // okay now
}
}
帮助程序会以非常有限的方式使用Rails功能。不要破坏框架,让它为您完成所有繁重的工作。使用选项数组比使用字符串要容易得多。
回答您的问题:
但是,有没有一种方法可以使用如上所述的选项字符串+ html_safe来设置所选值?现在,如果用户在表单重新呈现该选项时选择
class SomeClass<T extends (U extends any ? Constrained<T> : unknown), U = any> { prop!: T; method() { foo(this.prop as Constrained<T>); // I know what I'm doing! } }
作为其币种,则该选项将不会被选择。
是的,有可能:
select
但是,请参见答案顶部的注释。