- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
因此,在 Rails 应用程序中,我的数据库、硬盘驱动器中有一个表,对于每个硬盘驱动器,我都有可变数量的磁头和盘片。当我创建或编辑硬盘驱动器时,我想要 a) 动态显示所需的磁头状态和盘片状态表单的数量,或者 b) 将用户路由到页面上连续具有适当数量的磁头和状态表单的页面。我喜欢选项a,但我认为它需要一些自定义的javascript或其他东西才能使其工作(除非有插件,否则不太可行,我不知道javascript)。真的,我想拒绝任何未输入盘片和磁头状态的硬盘。
(变量名称当然是hard_drive、platter_status和head_status)
例如,如果我有一个笔记本电脑驱动器,我想在创建驱动器时定义它有 1 个磁头和盘片。当磁头和盘片计数组合框中的值发生变化时,显示盘片和磁头状态的表单。当点击创建按钮时,它应该使用数据在数据库中创建hard_drive,并根据需要创建每个platter_status和head_status项。
我该怎么做?我知道在 View 中,我必须添加一些内容来检测组合框中的更改并使用组合框中的值显示布局。
本质上与this类似。
<小时/>编辑 1:所以,我有this ,到目前为止还不起作用,但我有正确的想法。我偶然发现了一些讨论使用 javascript 动态添加 html 的线程。
<div class="field" id="head_count" >
<label for="hard_drive_head_count">Head count</label><br />
<input id="hard_drive_head_count" name="hard_drive[head_count]" type="number" value="0" />
<script type="text/javascript">
var input = document.getElementById('hard_drive_head_count'),
events = [
"input",
];
events.map(function(ev) {
input.addEventListener(ev, function() {
console.log(ev + ' => ' + input.value);
if (parseInt(input.value) === 1) {
document.getElementById('platter_statuses').innerHTML= "howdy";
} else {
document.getElementById('platter_statuses').innerHTML="";
}
}, false);
});
</script>
</div>
<label for="platter_status">Platter status</label><br />
<div class="field" id="platter_statuses" >
</div>
现在我有了这个,问题转移到 - 如何使用 platter_status View 的 _form.html.erb 中的表单快速填充它,并从数据库中按应有的方式填充所有内容?我在 else 中考虑过使用一些动态 ruby,但我不知道如何传递参数(盘片号和驱动器 id),以便数据库知道用什么填充它,而且我不知道在 <%= @SOMETHING_HERE %> 中的 @ 之后放置什么,以便它解析为 platter_status View ...
最佳答案
我实际上发现有一个非常适合我需要的助手。它是模型中的 Accepts_nested_attributes_for 函数。这与 Rails Cast 196 和 197 相结合帮助我实现了我想要的目标。
在硬盘驱动器型号中,您应该有:
attr_accessible :head_statuses_attributes
has_many :head_statuses, :dependent => :destroy
accepts_nested_attributes_for :head_statuses, :allow_destroy => true
针对 head_status 和 platter_status 模型。
在 View 中,您需要这样一行:
<%= link_to_add_fields "add head status", f, :head_status %>
并且在任何标记之外的部分,您需要:
<%= link_to_remove_fields "Remove", f %>
有关详细信息,请参阅以下文章: how accepts_nested_attributes_for works
How the dynamic editing is possible How the dynamic editing is possible part 2
关于javascript - Rails - 在创建父级时,如何动态创建属于 has_many 关系一部分的成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11179771/
我有一个具有以下模型的应用程序:- 类别- 子类别- 产品- 产品子类别 我的关系如下: Category has_many :subcategories Subcategory belongs_to
看来 rails 仍然不支持这种类型的关系并抛出 ActiveRecord::HasManyThroughAssociationPolymorphicThroughError 错误。 我该怎么做才能实
我想知道我可以在多大程度上使用 Rails 中的关联。考虑以下因素: class User :provider end class Provider :businesses belongs
我是 Rails 的新手。我想知道我是否需要将 add_index 添加到两个迁移? 我正在尝试定义用户和事件。每个用户可以有多个事件,每个事件可以有多个用户。所以我会做这样的事情: class Us
我有这个: class User :series end class Serial :serials end class Episode < ActiveRecord::Base belong
我一直致力于一个大量使用模型关联的项目,似乎我发现了 has_many 或 has_one through 功能与 :conditions 功能冲突的情况。简而言之,问题是 through 关联为 h
模拟以下情况的最佳方法是什么: Word belongs_to :wordable, :polymorphic => true Phrase has_many :words, :as => :
这似乎是一个典型的问题,但很难搜索。 我想选择用户通过 has_many 拥有的项目和用户通过 has_many through 关联的项目。 考虑以下模型: class User < ActiveR
首先对英语感到抱歉 所以我已经有了“用户 - 帖子”一对多关联,这意味着每个帖子只能有一个作者,现在我想在用户个人资料中添加“最喜欢的帖子”按钮,以及“添加到收藏夹”按钮每个帖子,所以问题是如何实现这
我有一个用户模型,允许用户关注其他用户。每个用户也有很多东西: class User has_many :following, :class_name => 'Followings', :fore
我正在使用 Rails 4.1 和 Ruby 2.1。 一个用户 has_many 辆车,和一辆车 has_many 约会。获取所有用户约会的最简单方法是什么? 理想情况下,我想做这样的事情:user
我想为 has_many/has_many 关系定义一个工厂(我想我做对了)但是我不知道如何为这些创建的工厂的每个对象定义属性。 这是主页,这是交易卡片的列表 我们假设下面的主页 View 是针对登录
我正在努力弄清楚如何实现这个计数。模型是用户、测试、等级 用户 has_many 测试,测试 has_many 成绩。 每个等级都有一个计算分数(strong_pass、pass、fail、stron
我有一个 has many through 关系来定义用户已回答的问题。 如何为用户创建的问题建立关系? 通常你会在用户和问题之间创建一个 has_many 和 belongs_to 关系,但是因为我
例如,在 class Student < ActiveRecord::Base has_many :awards end class Awards < ActiveRecord::Base b
我仍然在尝试如何处理在Ecto中创建/更新has_many, through:关联。我已经重新阅读了José's关于关联以及the docs的帖子,但我仍在努力。 我所拥有的是: 网站/模型/dish
# == Schema Information # # Table name: orders # # id :integer not null, pri
我正在尝试从 EventView.promoter_id = User.id 的用户获取事件,但它无法正常工作。这是我的设置(目前不正确): User has_many :events has_man
我有三门课 TeamMember , Service和ServiceTeamMember 我有 class Service has_many :service_team_members has
我需要列出所有用户及其销售的产品总量及其电子邮件和产品总量, class User :user).group('users.email').sum(:quantity) 关于mysql - 事件记录
我是一名优秀的程序员,十分优秀!