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

余生颓废 提交于 2019-11-29 02:26:11

问题


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


来源:https://stackoverflow.com/questions/12703987/how-to-display-only-the-value-in-edit-page-in-active-admin

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!