根据rails_admin中的选择值显示/隐藏字段

时间:2014-02-14 20:13:57

标签: ruby-on-rails rails-admin

我正在使用rails_admin gem来提供一些用于管理应用程序中数据的UI。我有一个模型的编辑表单,我希望能够在编辑屏幕中显示或隐藏表单字段,以根据表单中“类型”的选择收集其他信息。我找不到用rails_admin做这个的例子,这可能吗?

config.model 'MediaObject' do
    edit do   
     field :title
     field :type, :belongs_to_association
     field :asset, :carrierwave
    end
end

2 个答案:

答案 0 :(得分:2)

我不确定如何做到这一点,当您选择:type时,会立即显示相关字段。 如果您不介意首先保存对象,则可以执行以下操作:

field :field_name do
  visible do
    bindings[:object].type == # Put your type here
  end
end

只有在您已保存对象之后类型相关时,才会显示:field_name :type。此外,您可以做两件事来使这种解决方法更清洁。

首先,在创建对象后将update do configure :type do readonly true end end 设为只读。把它放在你的编辑区之后:

:type

其次,在创建对象之前,使所有特定于create do configure :field_name do visible false end # you could also do this for multiple fields include_fields :field_name1, :field_name2, :field_name3 do visible false end end 选择的字段不可见。把它放在你的编辑区之后:

{{1}}

虽然这不太理想,但我做了类似的事情,我不介意。我希望这会有所帮助。

答案 1 :(得分:2)

以下是您为rails_admin执行的操作

  1. 将以下内容添加到模型中(假设您在模型中定义了rails_admin):

    edit do
      field :my_field_1
      field :my_field_2
      field "load_js", :hidden do
        def render
          bindings[:view].render partial: "load_js"
        end
      end
    end
    
  2. 如果您愿意,可以在“apps / views / rails_admin / main / _load_js.html.erb”或haml中创建要呈现的文件。

  3. 将您的javascript添加内容添加到上述文件中:

    <script type="text/javascript">
      $(document).ready(function() {
        //whatever you would like to do to the form here
      });
    </script>