Rails ERB select_tag,更新默认值 javascript

Rails ERB select_tag, update default value with javascript

我目前有一个 select_tag 选择当天,看起来像这样(最后一个值指定选择哪一个):

<%= select_tag(:day, options_for_select([['Sunday', 0], ['Monday', 1],
['Tuesday', 2], ['Wednesday', 3], ['Thursday', 4], ['Friday', 5],
['Saturday', 6]], Time.now.wday)) %>

我遇到的问题 运行 是服务器使用 UTC,因此客户的日期可能不正确,具体取决于他或她的位置。我发现一些 Javascript 将 return 为客户提供正确的日期。

<script>
  function getDay(){
    var d = new Date();
    var n = d.getDay();
  }
</script>

如何通过插入此值来替换 Time.now.wday 作为 [=31= 的默认值,让 ERB 标签在当天使用客户端].

我考虑过这样的事情

document.getElementById("id_of_select_tag").selectedIndex = n;

但是 select_tag 的 ID 标签是动态生成的,所以我不确定如何插入它。

如有任何帮助,我们将不胜感激!

您可以传入一个静态ID:

<%= select_tag(:day, options_for_select([['Sunday', 0], ['Monday', 1],
['Tuesday', 2], ['Wednesday', 3], ['Thursday', 4], ['Friday', 5],
['Saturday', 6]], Time.now.wday), id: 'static-id-of-select-tag') %>

如果需要,甚至 class:

<%= select_tag(:day, options_for_select([['Sunday', 0], ['Monday', 1],
['Tuesday', 2], ['Wednesday', 3], ['Thursday', 4], ['Friday', 5],
['Saturday', 6]], Time.now.wday), class: 'static-class-for-js') %>

最终解决方案,感谢 Babar

<%= select_tag(:day, options_for_select([['Sunday', 0], ['Monday', 1], ['Tuesday', 2], ['Wednesday', 3], ['Thursday', 4], ['Friday', 5], ['Saturday', 6]], 0), id: 'static-id-of-select-tag') %>

<script>
function myFunction() {
var d = new Date();
var n = ndgetDay();

document.getElementById("static-id-of-select-tag").selectedIndex = n;
}
myFunction()
</script>