在 select 的条件下包含空白选项

Include blank option on a condition in select

我必须显示可以评级的国家/地区列表。如果一个国家已经被评级,那么用户不能 "unrate" 它

# countries index
= render @countries

# countries/_country
= form_for country do |f|
  =  f.select :rating,
    Rating.options,
    include_blank: "False if country is rated. True otherwise"

我试图将一个过程传递给 include_blank 选项,但没有成功

我可以使用 helper 来计算如下所示的选项:

def rating_options(country)
   if country.rating.present?
     Rating.options
   else
     [""] + Rating.options
   end
end

是否有更好的方法在条件的 select 标记中包含空白选项?

您可以将任何辅助方法或条件传递给 include_blank 选项

= form_for country do |f|
  = f.select :rating,
    Rating.options,
    include_blank: f.object.rating.empty?