如何仅显示Active Admin中编辑页面中的值

时间:2012-10-03 07:41:26

标签: ruby-on-rails-3 activeadmin formtastic

我在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

请帮忙。

6 个答案:

答案 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}解决了我的两个问题:

  1. 不允许用户edit
  2. 包含params
  3. 中的值

    我希望这会有所帮助。

答案 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