【问题标题】:How to display only the value in edit page in Active Admin如何在 Active Admin 的编辑页面中仅显示值
【发布时间】:2012-10-03 07:41:26
【问题描述】:

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

请帮忙。

【问题讨论】:

  • 实际上我所做的是我添加了 disabled => true,我看到了 disabled 文本框。我设置了文本框的背景以匹配页面颜色。所以它看起来像我需要的。但这不是正确的方法:(
  • 可惜了,应该是不错的选择

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


【解决方案1】:

正如亚历克斯所说,设置为禁用。然后你可以使用 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;  
}

【讨论】:

  • THX 很多 @Will 我对 css 做了一个小改动来强调禁用“字段”的概念:我用 cursor: not-allowed; 替换了 border: 0px solid #F4F4F4 !important;
【解决方案2】:

为了在 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

【讨论】:

  • 这会在表单提交时将值发送到控制器吗?
  • 不,它不会——不知道为什么需要这样做,因为理论上它显示了该字段已经保存的值。
【解决方案3】:

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

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

我希望这会有所帮助。

【讨论】:

  • :input_html =&gt; {:disabled =&gt; true} ,参数中不包含该字段值
【解决方案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

【讨论】:

    【解决方案5】:

    尝试为地址输入字段添加, :disabled =&gt; true

    【讨论】:

    • 当我添加 :disabled => 真的我可以看到那里的文本框,它不会是可编辑的。其实我不想那里没有任何文本框。
    【解决方案6】:

    诀窍是使用“对象”。以下是你应该如何编码:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-04
      • 2016-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-01
      相关资源
      最近更新 更多