How to display only the value in edit page in Active Admin

20,371

Solution 1

As Alex said, set to disabled. You could then use css to get the visual you wanted, if you can live with the semantics of that.

The syntax was slightly different for me to get this to work.

in your admin form:

 f.input :finish_position, input_html: { disabled: true } 

in your CSS active_admin.css

input[disabled="disabled"],
input[disabled] {
  background-color: #F4F4F4;
  border: 0px solid #F4F4F4 !important;  
}

Solution 2

For a cleaner form definition within your ActiveAdmin.register{} block you may as well want to define a "readonly" input type to be used within active admin using formtastic:

Form block syntax is for activeadmin version 1.0.0.pre at 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

Solution 3

I was facing the same issue and tried using :disabled but it did not solve my problem as I wanted field value to be included in params object while sending it to the server. When you mark a form input as :input_html => {:disabled => true} , it does not include this field value in params. So, instead I used :input_html => {:readonly => true} which solved both of my problems:

  1. Does not allow user to edit
  2. Includes the value in params

I hope this will help.

Solution 4

How about this?

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

Solution 5

Try to add , :disabled => true for address input field.

Share:
20,371
Amal Kumar S
Author by

Amal Kumar S

Ruby on Rails developer #SOreadytohelp

Updated on February 14, 2020

Comments

  • Amal Kumar S
    Amal Kumar S about 4 years

    I have a edit form in Active Admin. I need some field as read only.

    My current edit page is like

    enter image description here

    I need the page look like this

    enter image description here

    How can this be done. My code for the edit form page is like

        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
    

    Please help.

  • Amal Kumar S
    Amal Kumar S over 11 years
    when I add :disabled => ture I can see the textbox there, and it wont be editable. Actually I dont wan't any textbox there.
  • harshitpthk
    harshitpthk almost 8 years
    will this send the value to the controller when the form is submitted?
  • Whatcould
    Whatcould over 7 years
    No it won't — not sure why it needs to, since theoretically it's showing the already-saved value of the field.
  • Albert.Qing
    Albert.Qing almost 7 years
    :input_html => {:disabled => true} , it does not include this field value in params
  • microspino
    microspino over 6 years
    THX a lot @Will I did a small change to the css to emphasize the idea of a disabled "field": I've substituted border: 0px solid #F4F4F4 !important; with cursor: not-allowed;