在自定义视图中使用rails_admin表单?

时间:2012-09-03 22:00:47

标签: ruby-on-rails model-view-controller rails-admin

我正在创建自己的自定义视图,我需要让创建关联模型的过程对我的用户来说不那么痛苦。我希望在线显示所有相关联的模型,并使用控件进行编辑。这对于基本字段来说非常容易,但我宁愿使用form_filtering_select部分来表示内联模型的关联,但我找不到任何文档来执行此操作。

2 个答案:

答案 0 :(得分:1)

您可以使用Nested Form

考虑一个User类,它从projects reader方法返回一个Project实例数组,并响应projects_attributes = writer方法:

class User
  def projects
    [@project1, @project2]
  end

  def projects_attributes=(attributes)
    # Process the attributes hash
  end
end

请注意,fields_for实际上需要projects_attributes = writer方法才能正确识别:项目作为集合,以及要在表单标记中设置的正确索引。

当项目已经是User上的关联时,您可以使用accepts_nested_attributes_for为您定义编写器方法:

class User < ActiveRecord::Base
  has_many :projects
  accepts_nested_attributes_for :projects
end

此模型现在可以与嵌套的fields_for一起使用。对于集合中的每个实例,将重复给嵌套fields_for调用的块:

<%= nested_form_for @user do |user_form| %>
  ...
  <%= user_form.fields_for :projects do |project_fields| %>
    <% if project_fields.object.active? %>
      Name: <%= project_fields.text_field :name %>
    <% end %>
  <% end %>
  ...
<% end %>

以下是Reference的详细信息。

答案 1 :(得分:0)

那里有一个很酷的宝石可以满足您的需求。它被称为Nested Form Fields。它允许您在单个页面上编辑记录(及其has_many关联)。很酷的是,它甚至使用jQuery动态添加/删除表单字段而无需重新加载页面。检查宝石docs是否正确使用。希望有所帮助!