J'ai un formulaire de modification dans Active Admin. J'ai besoin d'un champ en lecture seule.
Ma page d'édition actuelle est comme
J'ai besoin que la page ressemble à ceci
Comment cela peut-il être fait. Mon code pour la page de formulaire de modification est comme
form :html => { :enctype => "multipart/form-data" } do |f|
f.inputs "Users" do
f.input :device, :label => 'Device', :as => :select, :collection => DEVICE, :include_blank => false
f.input :current_address, :label => 'Current Address', :as => :string
end
end
S'il vous plaît aider.
Comme Alex a dit, mis à désactivé. Vous pouvez ensuite utiliser css pour obtenir le visuel que vous voulez, si vous pouvez vivre avec la sémantique de cela.
La syntaxe était légèrement différente pour moi pour que cela fonctionne.
dans votre formulaire d'admin:
f.input :finish_position, input_html: { disabled: true }
dans votre CSS active_admin.css
input[disabled="disabled"],
input[disabled] {
background-color: #F4F4F4;
border: 0px solid #F4F4F4 !important;
}
Pour une définition de formulaire plus propre dans votre bloc ActiveAdmin.register {}, vous pouvez également définir un type d'entrée "en lecture seule" à utiliser dans l'administrateur actif à l'aide de formtastic:
La syntaxe du bloc de formulaire est pour activeadmin version 1.0.0.pre à 0becbef0918a.
# app/admin/inputs/readonly_input.rb
class ReadonlyInput < Formtastic::Inputs::StringInput
def to_html
input_wrapping do
label_html <<
template.content_tag('div', @object.send(method))
end
end
end
# app/admin/your_model.rb
ActiveAdmin.register YourModel do
# ...
form do |f|
# ...
input :current_address, as: :readonly
# ...
end
end
J'étais confronté au même problème et j'essayais d'utiliser :disabled
, mais cela ne résolvait pas mon problème car je voulais inclure la valeur field
dans l'objet params
lors de son envoi au serveur. Lorsque vous marquez un form input
en tant que :input_html => {:disabled => true}
, il n'inclut pas cette valeur de champ dans params
. Donc, à la place, j’ai utilisé :input_html => {:readonly => true}
qui a résolu mes deux problèmes:
edit
params
J'espère que cela aidera.
Essayez d'ajouter , :disabled => true
pour le champ de saisie de l'adresse.
Que dis-tu de ça?
form :html => { :enctype => "multipart/form-data" } do |f|
f.inputs "Users" do
f.input :device, :label => 'Device', :as => :select, :collection => DEVICE, :include_blank => false
f.li do
f.label :current_address
f.span f.object.current_address
end
end
end
L'astuce consiste à utiliser "objet". Voici comment vous devriez le coder:
form :html => { :enctype => "multipart/form-data" } do |f|
f.inputs "Users" do
f.input :device, :label => 'Device', :as => :select, :collection => DEVICE, :include_blank => false
f.label :current_address, f.object.current_address
end
end