ActiveAdminに編集フォームがあります。読み取り専用のフィールドが必要です。
私の現在の編集ページは
このようなページが必要です
これはどのように行うことができますか。フォーム編集ページの私のコードは次のようなものです
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
助けてください。
アレックスが言ったように、無効に設定します。次に、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;
}
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
同じ問題に直面し、:disabled
を使用しようとしましたが、サーバーに送信するときにfield
値をparams
オブジェクトに含めたいので、問題は解決しませんでした。 form input
を:input_html => {:disabled => true}
としてマークすると、このフィールド値はparams
に含まれません。そこで、代わりに:input_html => {:readonly => true}
を使用して、両方の問題を解決しました。
edit
を許可しませんparams
に値を含めますこれがお役に立てば幸いです。
アドレス入力フィールドに, :disabled => true
を追加してみてください。
これはどう?
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
秘訣は「オブジェクト」を使用することです。コーディング方法は次のとおりです。
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