问题标签 [fields-for]

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.

0 投票
2 回答
10007 浏览

ruby-on-rails-3 - Rails 3 fields_for - 排序顺序丢失

我正在使用带有 ruby​​ 1.9.2p0 的 Rails 3.0.3。

在我的profiles_controller(编辑功能)我有这个电话

以正确的顺序获取@profile_items,按“pos”排序。在 _form.html.erb 我有以下

前 3 行是测试代码,用于显示 @profile_items 的顺序正确。但是当它们被渲染时,它们已经失去了排序顺序!

现在我已经搜索了很多答案,我认为这一定是一个常见的“陷阱”。

感谢您的帮助...

0 投票
1 回答
1397 浏览

ruby-on-rails - 使用一对一关系时,fields_for 没有输出

尝试在单个表单上显示我的用户和配置文件模型时,我在尝试让 *fields_for* 产生输出时遇到了一些麻烦,这些使用 *has_one* 和 *belongs_to* 关系。

所以这里是模型类顶部的摘录:

控制器非常简单和标准:

这是当前视图中的一个片段:

我尝试过其他的东西,比如:

如果我手动添加该字段,一切正常:

值得一提的是,尽管我已经阅读了文档指南,但我对 rails 还很陌生,并不确定这些功能是如何工作的。同样在我的搜索中,很多fields_for一个一对多关系的例子,所以也许我以错误的方式处理这个问题?

非常感谢所有帮助、建议和进一步阅读:-)

干杯,

山姆

0 投票
1 回答
3152 浏览

ruby-on-rails - 带有 fields_for 的动态内容

我有一个使用 has_many 关系的嵌套表单。在我的表单视图中,我使用部分字段输入并传递 FormBuilder 对象。

form.html.haml:

_string_fields.html.haml:

这可以正常工作;但是,我想在 AJAX 中添加功能以使用 RJS 动态添加另一组字段,当我尝试通过 RJS 呈现部分时,显然s没有定义(我不知道我会通过:locals哈希)。

有什么方法可以正确地将字段动态添加到由定义的字段集fields_for,还是我必须在不使用帮助器的情况下重新实现我的部分?

0 投票
1 回答
808 浏览

ruby-on-rails - 提交带有 fields_for 部分的表单时,如何将新 id 分配给 fields_for 模型

我有一个处理 2 个模型的表格,Vehiculo 和 Poliza。这就是我现在设置它们的方式:

Vehiculo 上的 create 方法如下所示:

/vehiculos/new 上的表单有一个 @fields_for 部分,其中包含来自 poliza 的字段。当我提交表单时,它会保存所有字段,但不会将刚刚从 vehiculo 创建的 id 分配给 Polizas 表上的 vehiculo_id。在网上阅读了很多关于这个的问题后,它似乎应该根据模型上的关系“自动”保存它。这是真的?如果是这样,为什么它不起作用?如果没有,我需要在 create 方法中添加什么来解决这个问题?

谢谢!

更新:按照这里的建议使用 json 作为输出更新 create 方法后,我得到了:

那是输出,所以至少它是从表单中获取字段,但它没有将它们插入到 polizas 表中。

0 投票
2 回答
2807 浏览

ruby-on-rails - fields_for 和错误的参数数量(0 代表 1)错误

业余 Rails 程序员努力使用 fields_for 表单构建器。我的 rails 应用程序(在 v=2.3.11 上)跟踪实验室协议和这些协议中使用的动物(它们的重量等)。

我的具体问题是协议只能有一定数量的动物,但允许的数量是特定于一个物种的。

嵌套表单行为应显示所有动物种类的列表和协议允许的数量的编辑框。

模型:协议、Allowed_Animal、物种

物种模型

协议模型

Allowed_动物模型

allowed_animal 的表包括:

嵌套表单的工作方式如下:

该表单显示了我想要的方式,但提交后,我收到错误:

在控制器中尝试执行以下操作:

我不知道从这里去哪里。我的模型中是否需要有构建方法?或者我需要在我的控制器中做一些特别的事情吗?我的 form_builder 代码以及它如何遍历物种有问题吗?

有任何想法吗?

应用程序跟踪:

参数:

开发日志

0 投票
1 回答
1921 浏览

ruby-on-rails - 使用 fields_for 时重复的表单字段

我正在尝试创建一个嵌套表单来处理 has_many :through 关系并获取正在呈现的重复字段。

楷模

公司

提供

服务

控制器

设置/服务

意见

形式 -

_subs.html.erb

我知道 fields_for 导致重复但我不知道为什么?

有人可以澄清一下吗?

0 投票
3 回答
1048 浏览

ruby-on-rails - fields_for 无法传入数组

我正在尝试对一个对象子集进行 fields_for 并苦苦挣扎。以下是一些细节:

因此该代码基本上可以按预期工作,尽管在视图中进行这些调用显然很糟糕。为了清理代码,我添加了以下控制器代码:

然后当我这样做时:

它没有接收该数组,而是执行以下操作:

然后为该俱乐部的每个班次对象绘制字段...传入 Arel 对象似乎工作正常,但数组似乎不行。让 fields_for 仅绘制对象子集的最佳方法是什么?

我看过这个类似的问题,但我认为我不能像 has_many :shifts_on_day(date)... 那样进行关联。

编辑添加:我正在使用 MySQL 在 REE 上运行 Rails 3.0.7

0 投票
1 回答
4609 浏览

ruby-on-rails - Rails 3:nested_form、collection_select、accepted_nested_attributes_for 和 fields_for

更新:在这里回答

这里和互联网上有很多关于让nested_form、collection_select、accepted_nested_attributes_for 和fields_for 很好地一起玩的好问题和答案,但我仍然很难过。如果您能帮助我,请提前致谢。

目的:生成新的 isbn 记录。一个 isbn 可以有很多贡献者。我成功地使用ryanb nested_form gem根据需要在表单上动态生成新的贡献者字段。其中一个字段使用 Contributor 中所有名称记录的 collection_select 下拉列表。创建新记录时,需要将许多贡献者 id 写入连接表(contributors_isbns)。

我已经完成了一些工作,但仅限于可以将单个贡献者 ID 保存到 isbns 表中的新记录的程度。我似乎无法将任何数据写入连接表。

我有三个模型。贡献者和 Isbns 有多对多的关系,我使用 has_many :through 完成了这一点。一个 isbn 可以有多个贡献者,一个贡献者可以有多个 isbn。他们通过contributors_isbn 加入。

isbn.rb

贡献者.rb

贡献者_isbn.rb

在 isbns 控制器中:

(显然我无法决定使用哪种构建方法。)

在 isbns new.html.erb 视图中:

在 _fields 部分中,具有非常简单的 text_field 的版本:

在这里,一个更高级的版本也不起作用:

此代码使用此处的答案。两者都会导致nested_form_for @isbn在线上出现“缺失块”错误。

再次非常感谢。

更新:这里有一些关于 nested_form gem 的信息,对于查看这类问题可能会派上用场。这是关于accept_nested_attributes_for 的[2009 年但仍然相关的帖子][4]。

更新 2:嗯,这是一件事。我一直在用两个不同的模型研究这个的缩减版本,不使用 collection_select 或 has_many,而只是使用简单的 belongs_to / has_many 关联。父模型是 Contract,子模型是 Istc。我什至无法通过嵌套表单创建记录。但是,在查看堆栈并在谷歌上搜索错误消息“警告。无法批量分配受保护的属性”之后,我刚刚添加:istcs_attributes到我的:attr_accessible行中,现在我可以添加记录。缺少一个相当重要的部分,以及 RTFM 的一个案例,因为它就在 gem 自述文件中。我稍后会更新,看看这是否适用于更复杂的 has_many 通过关联。

更新 4:[这里][5] 是另一个关于如何处理零记录错误消息的有用帖子。

更新 5:稍微绕道 - 当我向表单动态添加一组新字段时,正在创建一个子记录。Duh - 我在子表单区域中有“添加”链接。这是之前的:

这是之后:

更新 6,回答后:

哦不。collection_select 不起作用。它正在添加新的贡献者记录,而不是使用贡献者模型中的现有记录。其他人也有这个问题。有任何想法吗?

0 投票
4 回答
9901 浏览

ruby-on-rails - 创建和更新 Mongoid 数组字段的表单

我一直在努力为具有数组字段的 Mongoid 模型创建一个表单。我希望我的表单在数组中的每个条目上都有文本框。如果我正在创建一条新记录,则默认值为一个空字段(以及一些用于在页面上动态添加新字段的 javascript)。

我已经搜索了使用 fields_for 的解决方案,但似乎更倾向于处理您拥有对象/模型数组的情况,而不是我拥有的情况,即字符串数组。

我将使用一个人和一个电话号码的例子。

对于控制器,假设是典型的控制器,但在new方法中我用一个空白字符串初始化了 phone_number 数组。

这是表单代码:

这一切都很好。有几件事我不喜欢。

  • text_field_tag 调用中字段的硬编码名称。
  • 使用 text_field_tag 而不是 f.text_field
  • 感觉我应该以某种方式使用 fields_for 而不是这个

有人对如何实现这一点有更好的建议吗?或者你会认为这是正确的吗?

0 投票
1 回答
1519 浏览

ruby-on-rails - Rails fields_for 验证后现有记录的重复表单

我遇到了一个相当奇怪的错误。我有一个嵌套表单,它可以按预期工作,除非现有记录上的验证失败。当对现有记录的验证失败时,重新呈现的编辑视图会包含两次无效记录的字段。第一组字段根据对象当前的存储方式填写。第二组字段填写的是刚刚提交的信息,发现无效。

我有一个基本的嵌套形式,其中一个父级(ShiftPeriod)有_许多子级(Shifts),每个子级都属于父级。ShiftPeriod 接受 Shifts_nested_attributes,allow_destroy 设置为 true。我正在使用nested_form gem,但我也尝试使用具有相同结果的常规 form_for

ShiftPeriod 的表格(我尽可能多地删除以保持简单,直到我弄清楚这一点):

带有轮班字段的部分:

Shift 对象的相关部分:

ShiftPeriod 对象的相关部分:

控制器:as_many 孩子(班次)和每个孩子都属于_父母。ShiftPeriod 接受 Shifts_nested_attributes,allow_destroy 设置为 true。我正在使用nested_form gem,但我也尝试使用具有相同结果的常规 form_for

控制器:

ShiftPeriod 的表格(我尽可能多地删除以保持简单,直到我弄清楚这一点):

带有轮班字段的部分:

Shift 对象的相关部分:

ShiftPeriod 对象的相关部分:

控制器: