Awesome Nested Fields 项目技术文档
1. 安装指南
Rails 3.1
-
在
Gemfile
中添加以下内容,并运行bundle install
以确保 gem 安装成功:gem 'awesome_nested_fields'
-
在
app/assets/javascripts/application.js
文件中添加以下内容,以确保 JavaScript 依赖项被添加到 asset pipeline 中。请确保在 jQuery 和 jQuery UJS Adapter 之后添加此行://= require jquery.nested-fields
-
现在你可以开始使用 awesome 嵌套模型了。
Rails 3.0
-
在
Gemfile
中添加以下内容,并运行bundle install
以确保 gem 安装成功。请确保在jquery-rails
之后添加此行,以确保 JavaScript 文件按正确顺序添加到模板中:gem 'awesome_nested_fields'
-
使用生成器将 JavaScript 依赖项复制到
public/javascripts
目录:rails generate awesome_nested_fields:install
-
(可选)JavaScript 依赖项将自动添加到默认的 JavaScript 文件中。如果你在模板中没有使用
javascript_include_tag :defaults
,请手动引入文件:<script src="/javascripts/jquery.nested-fields.min.js" type="text/javascript"></script>
-
现在你可以开始使用 awesome 嵌套模型了。
2. 项目使用说明
模型设置
首先,确保具有 has_many
或 has_and_belongs_to_many
关系的对象接受嵌套属性的集合。例如,如果一个 Person
模型有多个 Phone
模型,可以这样设置:
class Person < ActiveRecord::Base
has_many :phones
accepts_nested_attributes_for :phones, allow_destroy: true
end
accepts_nested_attributes_for
是 Active Record 的一个方法,允许你直接将嵌套模型的属性传递给父模型,而不是单独实例化每个子对象。
视图设置
接下来,在表单视图中使用 nested_fields_for
方法。它接收关联或集合名称、可选的选项哈希以及包含嵌套字段的块。例如:
<%= form_for(@person) do |f| %>
<% # person fields... %>
<h2>Phones</h2>
<div class="items">
<%= f.nested_fields_for :phones do |f| %>
<fieldset class="item">
<%= f.label :number %>
<%= f.text_field :number %>
<a href="#" class="remove">remove</a>
<%= f.hidden_field :id %>
<%= f.hidden_field :_destroy %>
</fieldset>
<% end %>
</div>
<a href="#" class="add">add phone</a>
<% # more person fields... %>
<% end %>
nested_fields_for
方法列出了该 Person
拥有的 Phone
,并添加了一个空的模板用于创建新的 Phone
。
JavaScript 设置
最后,在页面加载时激活嵌套字段操作。可以在 application.js
文件中添加以下内容:
$(document).ready(function(e) {
$('FORM').nestedFields();
});
3. 项目API使用文档
视图选项
show_empty
有时你可能希望在集合为空时显示一些内容。只需将 show_empty
设置为 true
,并在块中处理 nil
情况:
<%= f.nested_fields_for :phones, show_empty: true do |f| %>
<% if f %>
<% fields code... %>
<% else %>
<p class="empty">There are no phones.</p>
<% end %>
<% end %>
JavaScript 选项
选择器
为了使嵌套字段动态工作,JavaScript 代码需要知道要使用的元素。默认情况下,这是通过用 CSS 类标记关键元素来完成的,但你也可以使用其他选择器:
itemSelector
:标记集合中的每个项(默认.item
)containerSelector
:标记包含项的元素(默认.items
)addSelector
:标记用于添加新项的元素(默认.add
)removeSelector
:标记用于删除项的元素(默认.remove
)emptySelector
:标记在没有任何项时显示的元素(默认.empty
)
回调函数
可以在项插入或删除之前或之后执行操作。有四个回调函数可用:beforeInsert
、afterInsert
、beforeRemove
和 afterRemove
。所有回调函数都接收项作为第一个参数:
element.nestedFields({
beforeInsert: function(item) {
item.css('color', 'red'); // 执行某些操作
console.log(item + ' will be inserted.')
},
afterRemove: function(item) {
console.log(item + ' was removed.');
}
});
4. 项目安装方式
项目的安装方式已在“安装指南”部分详细说明。请根据你的 Rails 版本选择相应的安装步骤。
- DDeepSeek-V3.1-BaseDeepSeek-V3.1 是一款支持思考模式与非思考模式的混合模型Python00
- QQwen-Image-Edit基于200亿参数Qwen-Image构建,Qwen-Image-Edit实现精准文本渲染与图像编辑,融合语义与外观控制能力Jinja00
GitCode-文心大模型-智源研究院AI应用开发大赛
GitCode&文心大模型&智源研究院强强联合,发起的AI应用开发大赛;总奖池8W,单人最高可得价值3W奖励。快来参加吧~052CommonUtilLibrary
快速开发工具类收集,史上最全的开发工具类,欢迎Follow、Fork、StarJava04GitCode百大开源项目
GitCode百大计划旨在表彰GitCode平台上积极推动项目社区化,拥有广泛影响力的G-Star项目,入选项目不仅代表了GitCode开源生态的蓬勃发展,也反映了当下开源行业的发展趋势。06GOT-OCR-2.0-hf
阶跃星辰StepFun推出的GOT-OCR-2.0-hf是一款强大的多语言OCR开源模型,支持从普通文档到复杂场景的文字识别。它能精准处理表格、图表、数学公式、几何图形甚至乐谱等特殊内容,输出结果可通过第三方工具渲染成多种格式。模型支持1024×1024高分辨率输入,具备多页批量处理、动态分块识别和交互式区域选择等创新功能,用户可通过坐标或颜色指定识别区域。基于Apache 2.0协议开源,提供Hugging Face演示和完整代码,适用于学术研究到工业应用的广泛场景,为OCR领域带来突破性解决方案。00openHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!C0308- WWan2.2-S2V-14B【Wan2.2 全新发布|更强画质,更快生成】新一代视频生成模型 Wan2.2,创新采用MoE架构,实现电影级美学与复杂运动控制,支持720P高清文本/图像生成视频,消费级显卡即可流畅运行,性能达业界领先水平Python00
- GGLM-4.5-AirGLM-4.5 系列模型是专为智能体设计的基础模型。GLM-4.5拥有 3550 亿总参数量,其中 320 亿活跃参数;GLM-4.5-Air采用更紧凑的设计,拥有 1060 亿总参数量,其中 120 亿活跃参数。GLM-4.5模型统一了推理、编码和智能体能力,以满足智能体应用的复杂需求Jinja00
Yi-Coder
Yi Coder 编程模型,小而强大的编程助手HTML013
热门内容推荐
最新内容推荐
项目优选









