gpt4 book ai didi

ruby-on-rails - Rails collection_select 默认选择

转载 作者:行者123 更新时间:2023-12-04 05:35:53 24 4
gpt4 key购买 nike

在 Rails 4 中,我有

<%= form_for @person do |f| %>
<%= f.collection_select :country_id, Country.order(:name), :id, :name, include_blank: "Select your country" %>
...
<% end %>

我希望在加载页面时默认选择“选择您所在的国家/地区”。一种方法是使用 javascript(在 dom 加载后选择它)。有没有更简单的方法,例如向 collection_select 添加选项?

谢谢。

最佳答案

根据the docs ,这是prompt options 中的选项论据:

collection_select(:post, :author_id, Author.find(:all),
:id, :name_with_initial,
{:prompt => 'Please select the author of this post'})

collection_select在表单生成器上,我们省略第一个参数,因此在本例中:

f.collection_select :country_id, Country.order(:name), :id, :name, {prompt: 'Select your country'}

我已经 100% 确认这在我自己的运行 Rails 4.1.6 的应用程序上运行,其中 promptinclude_blank做同样的事情。

其工作方式是 Rails 注入(inject)一个空值 <option>作为生成的 <select> 中的第一项(这是因为 HTML 规范在选择输入的文本输入上没有类似于 placeholder 的内容)。

可能失败的原因:

  1. Rails 不会使用 selected 标记提示选项属性,我怀疑某些浏览器可能会选择渲染自己的空白条目而不是列表中的第一个条目
  2. 如果对于现有记录,Rails 确定当前记录的 country_id匹配列表中的一个元素,它将将该元素标记为 selected 。这是预期的行为,但如果您执行任何不标准的操作,可能会很痛苦。

如果您遇到这些问题,您可以选择手动构建表单(方法 options_from_collection_for_select 可能在这里有用)或使用 JavaScript 构建。还有一个无证的default您可以将属性添加到 <option>标签,但它不在规范中,并且浏览器支持可能不完整,您仍然需要手动构建表单。

关于ruby-on-rails - Rails collection_select 默认选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26247937/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com