Как отображать только значение на странице редактирования в Active Admin

У меня есть форма редактирования в Active Admin. Мне нужно поле для чтения только для чтения.

Моя текущая страница редактирования похожа на

enter image description here

Мне нужна страница, похожая на эту

enter image description here

Как это можно сделать. Мой код для страницы редактирования формы похож на

    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

Пожалуйста, помогите.

Ответы

Ответ 1

Как сказал Алекс, отключен. Затем вы можете использовать css для получения визуального изображения, которое вы хотели, если вы можете жить с семантикой этого.

Синтаксис для меня несколько отличался.

в форме администратора:

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

в вашем CSS active_admin.css

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

Ответ 2

Для более чистого определения формы в вашем блоке ActiveAdmin.register {} вы также можете определить тип ввода "только для чтения", который будет использоваться в активном админе с помощью formtastic:

Синтаксис блока формы для activeadmin версии 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

Ответ 3

Попробуйте добавить , :disabled => true для поля ввода адреса.

Ответ 4

Я столкнулся с той же проблемой и попытался использовать :disabled, но это не решило мою проблему, поскольку я хотел, чтобы значение field было включено в объект params при отправке его на сервер. Когда вы отмечаете form input как :input_html => {:disabled => true}, оно не включает это значение поля в params. Поэтому вместо этого я использовал :input_html => {:readonly => true}, который решил обе мои проблемы:

  • Не позволяет пользователю edit
  • Включает значение в params

Надеюсь, это поможет.

Ответ 5

Фокус в том, чтобы использовать "объект". Вот как вы должны его кодировать:

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