30

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

请帮忙。

4

6 回答 6

48

正如亚历克斯所说,设置为禁用。然后你可以使用 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;  
}
于 2013-11-07T20:48:37.147 回答
14

为了在 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
于 2014-12-08T15:04:59.293 回答
8

我遇到了同样的问题并尝试使用:disabled,但它并没有解决我的问题,因为我希望在将值发送到服务器时将其field包含在对象中。params当您将 a 标记form input:input_html => {:disabled => true}时,它不会在 中包含此字段值params。所以,相反,我使用:input_html => {:readonly => true}了它解决了我的两个问题:

  1. 不允许用户edit
  2. 包括值params

我希望这将有所帮助。

于 2016-07-13T13:32:37.597 回答
4

这个怎么样?

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
于 2018-02-14T07:13:06.740 回答
2

尝试添加, :disabled => true地址输入字段。

于 2012-10-03T08:28:27.403 回答
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
于 2017-03-08T19:26:13.300 回答