簡體   English   中英

Rails/ActiveAdmin 表單:如何根據另一個(布爾)輸入字段的值禁用輸入字段?

[英]Rails/ActiveAdmin form: how to disable an input field based on the value of another (boolean) input field?

我有一個 model ,它有一個 boolean 字段和一個數組字段,該字段從另一個 model (外鍵,與我的問題無關)中填充值。

在 ActiveAdmin 中,我有這樣的表格:

form do |f|
  f.semantic_errors
  f.inputs do
    f.input :boolean_field_name
    f.input :array_field_name,
            as: :searchable_select,
            ajax: true,
            input_html: { disabled: true }
  end
  f.actions
end

disabled: true有效,但我想用評估是否已在表單上選中boolean_field_name的輸入復選框(默認情況下未選中)的東西替換true

我試過params[:boolean_field_name]params.key?[:boolean_field_name]f.object.boolean_field_namef.object[:boolean_field_name]resource[:boolean_field_name]resource.boolean_field_name ,但他們什么都不做並評估據我所知為零。

我什至嘗試過ModelName.find(params[:id]).boolean_field_name但當然因為params[:id]是 nil 不起作用,並且無論如何它都找不到具有該 id 的記錄,因為該記錄沒有尚未創建。

我嘗試過查看 ActiveAdmin 存儲庫,但在源代碼中也找不到我要查找的信息。

這甚至可能嗎?

你的意思是這樣的嗎?

form do |f|
  f.semantic_errors
  f.inputs do
    f.input :boolean_field_name
    f.input :array_field_name,
            as: :searchable_select,
            ajax: true,
            input_html: { disabled: f.object.boolean_field_name # <= does not work }
  end
  f.actions
end

由於信息對我來說有點模棱兩可,我首先想知道:

  • 從描述:

disabled: true 有效,但我想用評估是否已在表單上選中 boolean_field_name 的輸入復選框(默認情況下未選中)的東西替換 true 。

您的意思是要在頁面加載后根據其他表單字段更改disabled屬性嗎? 如果這是真的,那么您必須使用 javascript 像這樣:

let booleanField = document.querySelector('booleanField'),
    arrayField = document.querySelector('arrayField');

booleanField.addEventListener('change', function(e) {
  arrayField.setAttribute('disabled', booleanField.value);
})

或者,如果您只想將disabled屬性的值設置為boolean_field最初在頁面加載時的值,如果您可以使用debugdebuggerbinding.pry等工具進行調試,它將為我們帶來更多信息。 檢查f.object.boolean_field_name返回的內容會很有幫助。 根據您提供的信息,我想它可能真的是nil

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM