问题标签 [nested-forms]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - 嵌套表单和 link_to_function
我有一个像这样的嵌套形式:
我第一次加载页面时,第一个 fields_for 块的 id 为 0;
我第一次单击“添加日期”时,会创建一个 id = 1 的新 fields_for 块;
然后,每次我点击“添加日期”时,都会显示一个新的 fields_for 块,但 id 保持为 1。
一个 HTML 示例可能更明确,这是我得到的输出:
感谢您提前为您提供帮助!
ruby-on-rails - rails: create Parent, if doesn't exist, whilte creating child record
Any best practices for the following?:
I have Manufacturer model that has_many Inventory
In my new Inventory form I want a field that maps to Manufacturer.name so that when one submits the new Inventory form the app:
- searches for a manufacturer with the 'name' from the form
- if it exists then assign the id to @inventory.manufacturer_id and save @inventory
- if it doesn't exist then create the manufacturer with the 'name' from the form, assign the id to @inventory.manufacturer_id and save
- have validations work on the new Inventory form
- such that, if the the Inventory form fails validation on a field other than 'name'
- the 'name' field will be repopulated with whatever the user entered (but a new manufacturer is not created unless the form passes validation)
- such that, if the the Inventory form fails validation on a field other than 'name'
ruby-on-rails - 嵌套模型抛出未定义的方法错误
我一直在关注RailsCast 197来尝试这个嵌套模型/表单,并且已经破解了这个代码超过 2 小时,但无济于事。我在看什么?
我有以下型号:
在我的 WorkoutsController 中,我有以下内容:
当我在浏览器中运行测试并调用控制器时,出现以下错误:
提前感谢您的帮助 - 我的 RoR 贵族不再让我感到惊讶!
编辑:fflyer05:我尝试使用与 RailsCast 相同的代码迭代集合,并尝试在 perform_exercises[0] 上构建 perform_sets - 但它不起作用。做任何其他事情,我得到一个未初始化的常量 PerformedExercise::PerformedSet 错误
ruby-on-rails - 如何正确编写具有 NN 关系的嵌套形式
在开发 Rails 3 应用程序时,我遇到了嵌套表单的问题。
一个集合是一组预定义的对象(使用 db:seed 创建)。另一个集合应该显示一个允许选择一些元素的表单。
一个例子比一个长描述更好,所以在这里。
假设您有 2 个模型:用户和组。
假设有几个组:Member、Admins、Guests、...
您希望您的用户有多个组,因此您需要一个中间表:成员资格。
模型代码很明显:
控制器不需要更改。然而,这种观点更为复杂。
我想显示一个复选框列表以选择几组预定义的复选框。
我在这里使用_destroy
具有反转值的特殊字段,以在实际未选中时销毁(因此在选中时将用户添加到组中)
然而,这并没有按预期工作,因为表单g
总是会在每个组之后创建一个具有任意 id 的输入(甚至通过在 之后包含它来破坏布局</li>
):
了解嵌套属性的语法如下:
每次发送 id 都不起作用,因为它会尝试更新不存在的记录而不是创建它,并在记录不存在时尝试销毁。
我找到的当前解决方案是删除所有错误的ID(它们应该是成员资格的ID,而不是简单的索引),并在用户已经拥有该组时添加真实ID。(这在创建和更新之前在控制器中调用)
fields_for
这看起来很不对,而且它在控制器中添加了很多逻辑,只是为了控制视图助手的不良行为。
另一种解决方案是自己创建所有表单 html,尝试模仿 Rails 约定,并避免 id 问题,但这在代码中确实很吵,我相信有更好的方法。
- 这是一种让
fields_for
工作变得更好的方法吗? - 有没有更合适的帮手?
- 我在这个问题的某个地方推理错误吗?
- 你将如何做到这一点?
谢谢
ruby-on-rails - Rails 嵌套属性和自定义验证
我对 Ruby 和 Rails(使用 2.3.8)都很陌生,所以如果我在这里遗漏了一些非常明显的东西,请原谅我,但我已经为此苦苦挣扎了一段时间,而且我的搜索没有结果。
在我的代码中,我有计划,一个计划有很多 Plan_Steps。每个 Plan_Step 都有一个数字(表示“1st”、“2nd”等)。我有一个更新计划的表格,我需要验证每个 Plan_Step 是否有唯一的编号。下面的代码可能会更好地解释设计:
模型/计划.rb:
控制器/plans_controller.rb:
现在,当我的表单提交更新时,params 哈希如下所示:
该数据库包含 Plan_Steps 的条目,其中包含以下内容:
请注意 ID=2 与 Number=2 存在,我要做的是删除 ID=2 并创建一个 Number=2 的新条目(ID=3)。
好的,所以有了这个设置,这是我的问题:
当我在验证中调用 plan_steps 时,它似乎是从数据库中提取值,而不是从传递给 update_attributes 的 params[] 数组中提取值。
例如,如果我在验证中取消注释“puts”行,我会看到 Plan_Steps 的描述,因为它们存在于数据库中,而不是它们存在于传入的参数中。这意味着我无法验证传入的 Plan_Steps。
我也无法在 Plan_Steps 模型中进行验证,因为除非我弄错了,否则验证将针对数据库(而不是传入的参数)进行。
如果这是一个措辞不当的问题,我深表歉意,但它相当具体。如果您需要任何澄清,请询问。
请记住,我是一个菜鸟,所以我很容易犯一些非常愚蠢的错误。
ruby-on-rails - 如何将数组传递给 Rails 中的 fields_for?
我想fields_for
在关联中的记录子集上使用。
我有一个Month
模型,它has_many :payments
。
但在我看来,我只想获得fields_for
其中的一些付款。例如:
这行不通。
我可以将一组记录传递给fields_for
,而不是通常的符号 ( fields_for :payments
) 方法吗?
ruby-on-rails - rails 处理单个和多个返回的对象
在 Rails 中,您可以使用 .each do || 循环查询返回的结果。但是如果只返回一行呢?或者你有0、1或许多的可能性?您如何处理这些情况而不会引发错误?
这种情况尤其是我在 ryan 的 railcast 博客 ( http://railscasts.com/episodes/196-nested-model-form-part-1 )之后接受嵌套属性的情况
我可以返回 1 个或多个嵌套项,然后我需要循环并编写 XML 表单。
ruby-on-rails - 嵌套表单 - 如何根据子模型的输入验证父模型?
有嵌套形式,关系是这样的
我在 Inspection 中有一个自定义验证方法,它取决于为 InspectionComponent 输入的属性。如何验证 - InspectionComponent 属性未保存或在检查验证中可用。
谢谢!
编辑:为了让事情更清楚一点,这是我正在尝试做的一个例子。
检查具有属性状态。InspectionComponent 也有一个属性 status。
检查编辑表单具有嵌套的检查组件,可以在此表单上更新每个模型的状态。如果所有@inspection_component.status == '完成',@inspection.status 应该只能被标记为'完成'。
因此,在验证@inspection 时,我必须能够看到用户为@inspection_component.status 输入的内容。
显然,我可以访问控制器中两个实例的参数,但是在应该进行验证的模型中,我看不到实现这一点的方法。
希望这很清楚,谢谢。
ruby-on-rails - 使用 accept_nested_attributes_for 创建新记录或更新现有记录
阅读重大更新以获取最新信息。
嘿大家,
我在一个涉及三个表的 Rails 应用程序中有一个多对多关系:一个用户表、一个兴趣表和一个连接 user_interests 表,该表也有一个评分值,因此用户可以对他们的每个兴趣进行评分1-10 级。
我基本上是在寻找一种方法,让新用户在注册时创建他们的评级,并在未来日期同时编辑他们的任何个人资料信息。
我试图通过 has_many 来关注这个问题 Rails nested form :through, how to edit attributes of join model? 但我遇到的问题是尝试将选择列表合并到组合中,并为用户评分多个兴趣。
型号代码:
查看代码:
我还在控制器的新/编辑操作中包含以下内容@user.interests.build.build_interest
我遇到的问题是,当我想要多个时,参数哈希中只传递了一个利率等级。我也得到了rails抛出的异常
我遗漏了哪些微小的细节或弄错了导致问题的原因?
编辑:
我找到了一种强制它工作的方法,但它需要在 chrome 开发人员工具中手动编辑 HTML,我的表单元素的 :name 属性正在生成,user[user_interests_attributes][rating]
但如果我将其更改为user[user_interests_attributes][][rating]
它将在我更新记录时工作。但是,我无法手动指定绑定到表单对象的表单元素的 :name。那么我能做些什么来证明正在通过多个利率评级,而不是 Rails 认为的一个?
大更新:
我得到了一个半功能版本,有一些细微的变化:
查看代码:
控制器代码:
现在,如果不存在评分,我可以编辑并更新或创建我的 user_interests,但是当我尝试创建新用户时,我收到一个错误,即用户为空。此外,我无法访问表单中的任何兴趣属性来显示用户实际评分的兴趣。任何人都可以帮助解决这些警告吗?
ruby-on-rails - Using Formtastic's semantic_fields_for with a has_many association
I am trying to create a nested form using formtastic. I've included my code below but am running into some problems that I've also listed below. Any suggestions? Thanks.
A default user is created when a Home is saved. How do I have the form display only the newly created records and not the existing one?
If #1 isn't possible, how do I make the existing record update? I have update_only set on the accepts_nested_attributes_for, but a new record is still created.
I am doing 2.times{ @home.home_members.build } in the controller action. When I print the size of @home.home_members I get 3 (one already exists) as expected. Why is the form only displaying 2 sets of inputs, one being populated with the existing home_member data?