[英]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_name
, f.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
最初在頁面加載時的值,如果您可以使用debug
、 debugger
或binding.pry
等工具進行調試,它將為我們帶來更多信息。 檢查f.object.boolean_field_name
返回的內容會很有幫助。 根據您提供的信息,我想它可能真的是nil
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.