How to display only the value in edit page in Acti

2020-02-23 05:36发布

问题:

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

My current edit page is like

I need the page look like this

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.

回答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;  
}


回答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


回答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.



回答4:

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



回答5:

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


回答6:

The trick is to use "object". Here is how you should code it:

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