我在Active Admin中有一个编辑表单。我需要一些字段作为只读。
我当前的编辑页面就像
我需要页面看起来像这样
如何做到这一点。我的编辑表单页面的代码就像
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
请帮忙。
答案 0 :(得分:42)
正如Alex所说,设置为禁用。然后,您可以使用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;
}
答案 1 :(得分:13)
对于ActiveAdmin.register {}块中更清晰的表单定义,您可能还希望使用formtastic定义要在活动管理中使用的“只读”输入类型:
表单块语法适用于0becbef0918a的activeadmin版本1.0.0.pre。
# 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
答案 2 :(得分:4)
我遇到了同样的问题并尝试使用:disabled
,但它并没有解决我的问题,因为我希望将field
值包含在params
对象中,同时将其发送到服务器。将form input
标记为:input_html => {:disabled => true}
时,params
中不包含此字段值。
所以,我使用:input_html => {:readonly => true}
解决了我的两个问题:
edit
params
我希望这会有所帮助。
答案 3 :(得分:2)
尝试为地址输入字段添加, :disabled => true
。
答案 4 :(得分:1)
这个怎么样?
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
答案 5 :(得分:0)
诀窍是使用“对象”。以下是编码方式:
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