我正在使用rails_admin gem来提供一些用于管理应用程序中数据的UI。我有一个模型的编辑表单,我希望能够在编辑屏幕中显示或隐藏表单字段,以根据表单中“类型”的选择收集其他信息。我找不到用rails_admin做这个的例子,这可能吗?
config.model 'MediaObject' do
edit do
field :title
field :type, :belongs_to_association
field :asset, :carrierwave
end
end
答案 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执行的操作
将以下内容添加到模型中(假设您在模型中定义了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
如果您愿意,可以在“apps / views / rails_admin / main / _load_js.html.erb”或haml中创建要呈现的文件。
将您的javascript添加内容添加到上述文件中:
<script type="text/javascript">
$(document).ready(function() {
//whatever you would like to do to the form here
});
</script>