我有一个允许用户注册锦标赛的表格。在构建注册表单的过程中,到目前为止,我使用基本的 field_type 动态嵌套字段。当我加载参与者新表单时,我试图从 Fields 表中加载所有 field_type 为基本的字段。它会找到它们,如果我只是从新表单中尝试 <%= @basic.name %> ,它将给出数据库中具有该字段类型的最后一个字段的名称,但如果我尝试,ruby-on-rails"/>

首页 > 解决方案 > rails undefined method `each' for #

我有一个允许用户注册锦标赛的表格。在构建注册表单的过程中,到目前为止,我使用基本的 field_type 动态嵌套字段。当我加载参与者新表单时,我试图从 Fields 表中加载所有 field_type 为基本的字段。它会找到它们,如果我只是从新表单中尝试 <%= @basic.name %> ,它将给出数据库中具有该字段类型的最后一个字段的名称,但如果我尝试

问题描述

我有一个允许用户注册锦标赛的表格。在构建注册表单的过程中,到目前为止,我使用基本的 field_type 动态嵌套字段。当我加载参与者新表单时,我试图从 Fields 表中加载所有 field_type 为基本的字段。它会找到它们,如果我只是从新表单中尝试 <%= @basic.name %> ,它将给出数据库中具有该字段类型的最后一个字段的名称,但如果我尝试:

<% @basic.each do |b| %>
  <%= b.name %>
<% end 

对于#<Field.

这是来自参与者控制器的新操作:

def new
    @participant = @event.participants.new
    @user = User.find(current_user.id)
    @children = @user.children
    @basic = Field.find_by(event_id: @event.id, field_type: 'basic')
  end

字段属于事件,但我是否必须将它们连接到参与者才能完成这项工作?

谢谢


如何在android studio或vscode中搜索整个Flutter源码

在 Android Studio 中,我们可以使用“ctrl+shift+f”在项目中搜索(在 Windows 中),

但这仅在我们自己的项目中显示搜索结果。

我们如何在整个 Flutter 源代码中搜索任何类或方法?

(比如我想BackdropFilter在Flutter源码中搜索类,应该怎么做?)

我们可以在 IDE 中使用“转到定义”,但我只想搜索。

标签: ruby-on-rails

解决方案


find_by只返回一条记录(或者nil如果条件不匹配)用于where返回一个集合。

@basic = Field.where(event_id: @event.id, field_type: 'basic')

但是,假设您已经has_many :fields定义了关联,Event您也可以使用:

@basic = @event.fields.where(field_type: 'basic')

如果你有scope :basic, -> { where(field_type: 'basic') }定义,Field你可以进一步简化为:

@basic = @event.fields.basic

推荐阅读