如何使用 rails gem best_in_place 在 select 字段中显示当前值?

how to display current value in select field with using rails gem best_in_place?

我正在使用 rails gem best_in_place.

在 select 字段中,它不显示当前值,而是显示类似 -.

的内容

此外,如果我 select 其他数据,日期字段不会更改日期。

<% @user.each do |record| %>    
 <tr>
  <td>
     <%= best_in_place record, :name, :as => :input %> 
  </td>
  <td>
    <%= best_in_place record, :gender, :as => :select, collection: (MUser.pluck(:id, :gender)) %>
  </td>
   <%= best_in_place record, :dob, :as => :date, class: 'datepicker1 %>
  </td>
 </tr>
<% end %>

日期选择器使用 gem 日期选择器。 日期选择器配置:

$('.datepicker1').datepicker({      
    regional: "en",
    todayHighlight: true,
    changeMonth: true,
    todayHighlight: true,
    language: "en",
    orientation: "auto",
    toggleActive: true,
    autoclose: true
});

第一次加载页面日期字段: enter image description here 此图像是第一次加载页面时的默认视图。

  1. 当我单击该字段然后打开 datpicker 并 selected,但日期 selected 就像 05/16/1923。 正如我在 datepicker js 中设置的那样,无法像配置的方式那样工作。

enter image description here

文本值未显示,因为助手在您的 collection 中找不到它。 如果您的属性是一个字符串(如@nitin-srivastava 所假设的那样),您必须传递一个字符串 collection.

并且,根据这个 post Rails 4 Best in place select collection 你必须传递一个 Hash collection 这种形式 :

{"txt1" => "txt1", "txt2" => "txt2", "txt3" => "txt3"}

这对我有用。

编辑: 所以你可以这样写:

<%= best_in_place record, :gender, as: :select, collection: {'Male' => 'Male', 'Female' => 'Female', 'Other' => 'Other'} %>

如果 record.gender 等于 'Male'、'Female' 或 'Other',它将被显示。

您需要像 [['Male', 'Male'], ['Female', 'Female']] 那样传递 gender 的 collection 而不是像 idgender 的 collection 16=]。如果 collection 正确,它将显示当前值。

用这个代码检查

<%= best_in_place record, :gender, :as => :select, collection: [['Male', 'Male'], ['Female', 'Female']] %>

不知道为什么要从MUser收集性别。仍然想使用 MUser 然后试试这个。

<%= best_in_place record, :gender, :as => :select, collection: MUser.pluck(:gender).uniq.map { |g| Array.new(2, g) } %>

希望对你有用。