如何使用simple_form禁用下拉列表中的特定值?

时间:2016-02-03 12:26:22

标签: ruby-on-rails simple-form multi-select jquery-chosen slim-lang

我在rails应用程序中使用simple_form。我想在下拉列表中禁用特定值。

以下是代码的一部分

= simple_form_for(@organization,url: admin_organization_path) do |f| 
 = f.input :hospital_name, input_html: { class: "form-control"}
 = f.input :parent, collection: @organizations, input_html: { class: "form-control", id: "chosen-select-speciality"}  

我尝试使用:disabled => @organizations.first,但我失败了。 有没有其他方法可以使用。请帮助我。感谢。

2 个答案:

答案 0 :(得分:7)

选择框的Simpleform构建器使用每个选项的值与disabled属性的值进行比较,因此您只需使用组织的id来禁用所需的选项:

= simple_form_for(@organization,url: admin_organization_path) do |f| 
 = f.input :hospital_name, input_html: { class: "form-control"}
 = f.input :parent, collection: @organizations, input_html: { class: "form-control", id: "chosen-select-speciality"}, disabled: @organizations.first.id

如果要为selectbox禁用多个选项,可以手动构建内联选项列表或使用帮助程序并将其用作输入属性:

= f.input :parent,  collection: @organizations.map{|o| [o.id, o.name, {disabled: o.id.in?([1,21,10])}]}, input_html: { class: "form-control", id: "chosen-select-speciality"}

答案 1 :(得分:3)

通过使用JavaScript,您可以轻松地在下拉列表中禁用特定值:

$(/* option selector */).prop('disabled', true);

action

中查看