web-dev-qa-db-ja.com

ActiveAdminの編集ページに値のみを表示する方法

ActiveAdminに編集フォームがあります。読み取り専用のフィールドが必要です。

私の現在の編集ページは

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

助けてください。

27
Amal Kumar S

アレックスが言ったように、無効に設定します。次に、cssを使用して、そのセマンティクスに対応できる場合は、必要なビジュアルを取得できます。

これを機能させるには、構文が少し異なります。

管理フォーム:

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

cSSactive_admin.cssで

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

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

同じ問題に直面し、:disabledを使用しようとしましたが、サーバーに送信するときにfield値をparamsオブジェクトに含めたいので、問題は解決しませんでした。 form input:input_html => {:disabled => true}としてマークすると、このフィールド値はparamsに含まれません。そこで、代わりに:input_html => {:readonly => true}を使用して、両方の問題を解決しました。

  1. ユーザーにeditを許可しません
  2. paramsに値を含めます

これがお役に立てば幸いです。

4
Rahul Goyal

アドレス入力フィールドに, :disabled => trueを追加してみてください。

2
alex

これはどう?

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

秘訣は「オブジェクト」を使用することです。コーディング方法は次のとおりです。

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