web-dev-qa-db-fra.com

Comment afficher uniquement la valeur dans la page d'édition dans Active Admin

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

enter image description here

J'ai besoin que la page ressemble à ceci

enter image description here

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.

25
Amal Kumar S

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;  
}
42
Will

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
13
David

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:

  1. Ne permet pas à l'utilisateur de edit
  2. Inclut la valeur dans params

J'espère que cela aidera.

3
Rahul Goyal

Essayez d'ajouter , :disabled => true pour le champ de saisie de l'adresse.

2
alex

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
1
deraru

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
0
mshasib