1

我有一个工作表单(未绑定到模型,因此使用form_tag),其中包括一个选择框。

相关代码如下:

select_tag 'language', "<option value='ar' selected>Arabic</option>
<option value='bg'>Bulgarian</option><option value='ca'>Catalan</option>
<option value='zh-CHS'>Chinese (Simplified)</option>
<option value='zh-CHT'>Chinese (Traditional)</option>
...
<option value='tr'>Turkish</option><option value='uk'>Ukrainian</option>
<option value='vi'>Vietnamese</option>".html_safe

您会注意到,阿拉伯语是默认选项,列表中大约有 35 种语言。

当用户选择他们的语言时,我单独存储值(在提交表单时通过 GET),但我希望表单在下次遇到表单时自动选择用户选择的语言。换句话说:

  1. “默认”选项是阿拉伯语;
  2. 用户选择法语作为他们的语言;
  3. 下次他们遇到该表单时(例如,当他们返回相关页面时),将选择法语而不是阿拉伯语。

我想到实现这一点的一种方法是通过case...when调用,其中selected属性被添加到相关选项中,但是列表中有 35 多种语言,这可能会有点繁琐,我相信有更好的/更整洁的方式。

有任何想法吗?我在想options_for_select是解决方案,但我不确定这将如何进入上述代码?

4

1 回答 1

2

哈!通常,我在发布此问题后的 10 分钟内设法解决了问题。您可以使用options_for_select,我的问题的解决方案(对于碰巧看到此问题的任何有类似查询的人)如下:

select_tag 'language', 
options_for_select([
["Arabic", "ar"], 
["Bulgarian", "br"], 
["Catalan", "ca"],
....
], params[:get_language])

如果params[:get_language]未设置,即之前没有提交过表单,那么我认为没有选择任何选项(或者,换句话说,列表中的第一个选项是默认选择)但我没有对此进行了测试(我在其他地方有更多代码可以检查是否是第一次调用此表单)。

对不起,各位,浪费了你们的时间!

于 2012-09-15T20:48:40.527 回答