为什么 select 助手不自动显示 selected 值?

why select helper does not auto show the selected value?

此代码有效:

select("questionnaire", "is_active", options_for_select([["no", false], ["yes", true]], @questionnaire.is_active) )

但这不会:

select("questionnaire", "is_active", options_for_select([["no", false], ["yes", true]]) )

为什么 rails 不知道自己处理选定的值?这是什么逻辑?

我猜你是在没有表单对象的情况下直接调用助手:

<%= select(:questionnaire, :is_active, ......) %>

您应该在该对象的表单上调用它:

<%= form_for @questionnaire do |form| %>
  <%= form.select(:is_active, [["no", false], ["yes", true]]) %>

在这种情况下,您实际上并不需要 options_for_select,select 助手将使用适当的 selected 值调用它。