简体   繁体   English

在 Rails 上的 Ruby 中使用带有 form_for 的 collection_select 的未定义方法“id”错误

[英]Undefined method 'id' error using collection_select with form_for in Ruby on Rails

I'm having an issue with collection_select using form_for in rails.我在 rails 中使用 form_for 时遇到了 collection_select 的问题。 This issue is coming from a method that was working until I namespaced my routes to be only for admin.这个问题来自一种一直有效的方法,直到我将路由命名为仅供管理员使用。 The admin routes are working as they should as far as I can tell, but it is the only connection I can find to why this method stopped working.据我所知,管理路线正在正常工作,但这是我能找到的唯一联系方式,说明此方法为何停止工作。

Error:错误:

undefined method `id' for #<Array:0x00007faf084c7048>

Here is the trace if that would help:如果有帮助,这是跟踪:

actionview (6.1.3.2) lib/action_view/helpers/tags/base.rb:41:in `public_send'
actionview (6.1.3.2) lib/action_view/helpers/tags/base.rb:41:in `value'
actionview (6.1.3.2) lib/action_view/helpers/tags/collection_select.rb:18:in `block in render'
actionview (6.1.3.2) lib/action_view/helpers/tags/collection_select.rb:18:in `fetch'
actionview (6.1.3.2) lib/action_view/helpers/tags/collection_select.rb:18:in `render'
actionview (6.1.3.2) lib/action_view/helpers/form_options_helper.rb:203:in `collection_select'
actionview (6.1.3.2) lib/action_view/helpers/form_options_helper.rb:835:in `collection_select'
app/views/admin/users/_edit_my_profile.html.erb:28
actionview (6.1.3.2) lib/action_view/helpers/capture_helper.rb:45:in `block in capture'
actionview (6.1.3.2) lib/action_view/helpers/capture_helper.rb:209:in `with_output_buffer'
actionview (6.1.3.2) lib/action_view/helpers/capture_helper.rb:45:in `capture'
actionview (6.1.3.2) lib/action_view/helpers/form_helper.rb:1004:in `fields_for'
actionview (6.1.3.2) lib/action_view/helpers/form_helper.rb:2195:in `fields_for'
app/views/admin/users/_edit_my_profile.html.erb:16
actionview (6.1.3.2) lib/action_view/helpers/capture_helper.rb:45:in `block in capture'
actionview (6.1.3.2) lib/action_view/helpers/capture_helper.rb:209:in `with_output_buffer'
actionview (6.1.3.2) lib/action_view/helpers/capture_helper.rb:45:in `capture'
actionview (6.1.3.2) lib/action_view/helpers/form_helper.rb:450:in `form_for'
app/views/admin/users/_edit_my_profile.html.erb:3
actionview (6.1.3.2) lib/action_view/base.rb:247:in `public_send'
actionview (6.1.3.2) lib/action_view/base.rb:247:in `_run'
actionview (6.1.3.2) lib/action_view/template.rb:154:in `block in render'
activesupport (6.1.3.2) lib/active_support/notifications.rb:205:in `instrument'
actionview (6.1.3.2) lib/action_view/template.rb:345:in `instrument_render_template'
actionview (6.1.3.2) lib/action_view/template.rb:152:in `render'
actionview (6.1.3.2) lib/action_view/renderer/partial_renderer.rb:285:in `block in render_partial_template'
activesupport (6.1.3.2) lib/active_support/notifications.rb:203:in `block in instrument'
activesupport (6.1.3.2) lib/active_support/notifications/instrumenter.rb:24:in `instrument'
activesupport (6.1.3.2) lib/active_support/notifications.rb:203:in `instrument'
actionview (6.1.3.2) lib/action_view/renderer/partial_renderer.rb:280:in `render_partial_template'
actionview (6.1.3.2) lib/action_view/renderer/partial_renderer.rb:271:in `render'
actionview (6.1.3.2) lib/action_view/renderer/renderer.rb:81:in `render_partial_to_object'
actionview (6.1.3.2) lib/action_view/renderer/renderer.rb:27:in `render_to_object'
actionview (6.1.3.2) lib/action_view/renderer/renderer.rb:22:in `render'
actionview (6.1.3.2) lib/action_view/helpers/rendering_helper.rb:38:in `block in render'
actionview (6.1.3.2) lib/action_view/base.rb:273:in `in_rendering_context'
actionview (6.1.3.2) lib/action_view/helpers/rendering_helper.rb:34:in `render'
app/views/admin/users/profile.html.erb:14
actionview (6.1.3.2) lib/action_view/base.rb:247:in `public_send'
actionview (6.1.3.2) lib/action_view/base.rb:247:in `_run'
actionview (6.1.3.2) lib/action_view/template.rb:154:in `block in render'
activesupport (6.1.3.2) lib/active_support/notifications.rb:205:in `instrument'
actionview (6.1.3.2) lib/action_view/template.rb:345:in `instrument_render_template'
actionview (6.1.3.2) lib/action_view/template.rb:152:in `render'
actionview (6.1.3.2) lib/action_view/renderer/template_renderer.rb:61:in `block (2 levels) in render_template'
activesupport (6.1.3.2) lib/active_support/notifications.rb:203:in `block in instrument'
activesupport (6.1.3.2) lib/active_support/notifications/instrumenter.rb:24:in `instrument'
activesupport (6.1.3.2) lib/active_support/notifications.rb:203:in `instrument'
actionview (6.1.3.2) lib/action_view/renderer/template_renderer.rb:56:in `block in render_template'
actionview (6.1.3.2) lib/action_view/renderer/template_renderer.rb:71:in `block in render_with_layout'
activesupport (6.1.3.2) lib/active_support/notifications.rb:203:in `block in instrument'
activesupport (6.1.3.2) lib/active_support/notifications/instrumenter.rb:24:in `instrument'
activesupport (6.1.3.2) lib/active_support/notifications.rb:203:in `instrument'
actionview (6.1.3.2) lib/action_view/renderer/template_renderer.rb:70:in `render_with_layout'
actionview (6.1.3.2) lib/action_view/renderer/template_renderer.rb:55:in `render_template'
actionview (6.1.3.2) lib/action_view/renderer/template_renderer.rb:11:in `render'
actionview (6.1.3.2) lib/action_view/renderer/renderer.rb:61:in `render_template_to_object'
actionview (6.1.3.2) lib/action_view/renderer/renderer.rb:29:in `render_to_object'
actionview (6.1.3.2) lib/action_view/rendering.rb:117:in `block in _render_template'
actionview (6.1.3.2) lib/action_view/base.rb:273:in `in_rendering_context'
actionview (6.1.3.2) lib/action_view/rendering.rb:116:in `_render_template'
actionpack (6.1.3.2) lib/action_controller/metal/streaming.rb:218:in `_render_template'
actionview (6.1.3.2) lib/action_view/rendering.rb:103:in `render_to_body'
actionpack (6.1.3.2) lib/action_controller/metal/rendering.rb:52:in `render_to_body'
actionpack (6.1.3.2) lib/action_controller/metal/renderers.rb:142:in `render_to_body'
actionpack (6.1.3.2) lib/abstract_controller/rendering.rb:25:in `render'
actionpack (6.1.3.2) lib/action_controller/metal/rendering.rb:36:in `render'
actionpack (6.1.3.2) lib/action_controller/metal/instrumentation.rb:46:in `block (2 levels) in render'
/home/taylor/.rvm/rubies/ruby-2.6.1/lib/ruby/2.6.0/benchmark.rb:308:in `realtime'
activesupport (6.1.3.2) lib/active_support/core_ext/benchmark.rb:14:in `ms'
actionpack (6.1.3.2) lib/action_controller/metal/instrumentation.rb:46:in `block in render'
actionpack (6.1.3.2) lib/action_controller/metal/instrumentation.rb:86:in `cleanup_view_runtime'
activerecord (6.1.3.2) lib/active_record/railties/controller_runtime.rb:34:in `cleanup_view_runtime'
actionpack (6.1.3.2) lib/action_controller/metal/instrumentation.rb:45:in `render'
actionpack (6.1.3.2) lib/action_controller/metal/implicit_render.rb:35:in `default_render'
actionpack (6.1.3.2) lib/action_controller/metal/basic_implicit_render.rb:6:in `block in send_action'
actionpack (6.1.3.2) lib/action_controller/metal/basic_implicit_render.rb:6:in `tap'
actionpack (6.1.3.2) lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'
actionpack (6.1.3.2) lib/abstract_controller/base.rb:228:in `process_action'
actionpack (6.1.3.2) lib/action_controller/metal/rendering.rb:30:in `process_action'
actionpack (6.1.3.2) lib/abstract_controller/callbacks.rb:42:in `block in process_action'
activesupport (6.1.3.2) lib/active_support/callbacks.rb:117:in `block in run_callbacks'
actiontext (6.1.3.2) lib/action_text/rendering.rb:20:in `with_renderer'
actiontext (6.1.3.2) lib/action_text/engine.rb:55:in `block (4 levels) in <class:Engine>'
activesupport (6.1.3.2) lib/active_support/callbacks.rb:126:in `instance_exec'
activesupport (6.1.3.2) lib/active_support/callbacks.rb:126:in `block in run_callbacks'
activesupport (6.1.3.2) lib/active_support/callbacks.rb:137:in `run_callbacks'
actionpack (6.1.3.2) lib/abstract_controller/callbacks.rb:41:in `process_action'
actionpack (6.1.3.2) lib/action_controller/metal/rescue.rb:22:in `process_action'
actionpack (6.1.3.2) lib/action_controller/metal/instrumentation.rb:34:in `block in process_action'
activesupport (6.1.3.2) lib/active_support/notifications.rb:203:in `block in instrument'
activesupport (6.1.3.2) lib/active_support/notifications/instrumenter.rb:24:in `instrument'
activesupport (6.1.3.2) lib/active_support/notifications.rb:203:in `instrument'
actionpack (6.1.3.2) lib/action_controller/metal/instrumentation.rb:33:in `process_action'
actionpack (6.1.3.2) lib/action_controller/metal/params_wrapper.rb:249:in `process_action'
activerecord (6.1.3.2) lib/active_record/railties/controller_runtime.rb:27:in `process_action'
actionpack (6.1.3.2) lib/abstract_controller/base.rb:165:in `process'
actionview (6.1.3.2) lib/action_view/rendering.rb:39:in `process'
actionpack (6.1.3.2) lib/action_controller/metal.rb:190:in `dispatch'
actionpack (6.1.3.2) lib/action_controller/metal.rb:254:in `dispatch'
actionpack (6.1.3.2) lib/action_dispatch/routing/route_set.rb:50:in `dispatch'
actionpack (6.1.3.2) lib/action_dispatch/routing/route_set.rb:33:in `serve'
actionpack (6.1.3.2) lib/action_dispatch/journey/router.rb:50:in `block in serve'
actionpack (6.1.3.2) lib/action_dispatch/journey/router.rb:32:in `each'
actionpack (6.1.3.2) lib/action_dispatch/journey/router.rb:32:in `serve'
actionpack (6.1.3.2) lib/action_dispatch/routing/route_set.rb:842:in `call'
rack (2.2.3) lib/rack/tempfile_reaper.rb:15:in `call'
rack (2.2.3) lib/rack/etag.rb:27:in `call'
rack (2.2.3) lib/rack/conditional_get.rb:27:in `call'
rack (2.2.3) lib/rack/head.rb:12:in `call'
actionpack (6.1.3.2) lib/action_dispatch/http/permissions_policy.rb:22:in `call'
actionpack (6.1.3.2) lib/action_dispatch/http/content_security_policy.rb:18:in `call'
rack (2.2.3) lib/rack/session/abstract/id.rb:266:in `context'
rack (2.2.3) lib/rack/session/abstract/id.rb:260:in `call'
actionpack (6.1.3.2) lib/action_dispatch/middleware/cookies.rb:689:in `call'
activerecord (6.1.3.2) lib/active_record/migration.rb:601:in `call'
actionpack (6.1.3.2) lib/action_dispatch/middleware/callbacks.rb:27:in `block in call'
activesupport (6.1.3.2) lib/active_support/callbacks.rb:98:in `run_callbacks'
actionpack (6.1.3.2) lib/action_dispatch/middleware/callbacks.rb:26:in `call'
actionpack (6.1.3.2) lib/action_dispatch/middleware/executor.rb:14:in `call'
actionpack (6.1.3.2) lib/action_dispatch/middleware/actionable_exceptions.rb:18:in `call'
actionpack (6.1.3.2) lib/action_dispatch/middleware/debug_exceptions.rb:29:in `call'
web-console (4.1.0) lib/web_console/middleware.rb:132:in `call_app'
web-console (4.1.0) lib/web_console/middleware.rb:28:in `block in call'
web-console (4.1.0) lib/web_console/middleware.rb:17:in `catch'
web-console (4.1.0) lib/web_console/middleware.rb:17:in `call'
actionpack (6.1.3.2) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call'
railties (6.1.3.2) lib/rails/rack/logger.rb:37:in `call_app'
railties (6.1.3.2) lib/rails/rack/logger.rb:26:in `block in call'
activesupport (6.1.3.2) lib/active_support/tagged_logging.rb:99:in `block in tagged'
activesupport (6.1.3.2) lib/active_support/tagged_logging.rb:37:in `tagged'
activesupport (6.1.3.2) lib/active_support/tagged_logging.rb:99:in `tagged'
railties (6.1.3.2) lib/rails/rack/logger.rb:26:in `call'
sprockets-rails (3.2.2) lib/sprockets/rails/quiet_assets.rb:13:in `call'
actionpack (6.1.3.2) lib/action_dispatch/middleware/remote_ip.rb:81:in `call'
actionpack (6.1.3.2) lib/action_dispatch/middleware/request_id.rb:26:in `call'
rack (2.2.3) lib/rack/method_override.rb:24:in `call'
rack (2.2.3) lib/rack/runtime.rb:22:in `call'
activesupport (6.1.3.2) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call'
actionpack (6.1.3.2) lib/action_dispatch/middleware/executor.rb:14:in `call'
actionpack (6.1.3.2) lib/action_dispatch/middleware/static.rb:24:in `call'
rack (2.2.3) lib/rack/sendfile.rb:110:in `call'
actionpack (6.1.3.2) lib/action_dispatch/middleware/host_authorization.rb:98:in `call'
webpacker (5.4.0) lib/webpacker/dev_server_proxy.rb:25:in `perform_request'
rack-proxy (0.6.5) lib/rack/proxy.rb:57:in `call'
railties (6.1.3.2) lib/rails/engine.rb:539:in `call'
puma (5.3.2) lib/puma/configuration.rb:249:in `call'
puma (5.3.2) lib/puma/request.rb:77:in `block in handle_request'
puma (5.3.2) lib/puma/thread_pool.rb:338:in `with_force_shutdown'
puma (5.3.2) lib/puma/request.rb:76:in `handle_request'
puma (5.3.2) lib/puma/server.rb:438:in `process_client'
puma (5.3.2) lib/puma/thread_pool.rb:145:in `block in spawn_thread' 

Here is the full method:这是完整的方法:

<%= user_builder.fields_for :team_attributes, [:admin, @team] do |team_builder| %>
            <%= team_builder.hidden_field :profile, :value => "profile" %>
        <% if @company.teams.all == [] %>
            <br><h3>Create a New Team:</h3>
        Team Name: <%= team_builder.text_field :name %>
        Team Description: <%= team_builder.text_area :description %><br><br>
        <% else %>
            <% if @show_form == "new-position" %>
               Change Team: <%= team_builder.collection_select :id, @company.teams, :id, :name, {:include_blank => true} %>
               Or <%= link_to "Create a new Team", "/admin/profile/#{@user.id}/edit/new-team-and-new-position" %><br><br>
            <% elsif @show_form == "new-team" %>
            <% else %>
               Change Team: <%= team_builder.collection_select :id, @company.teams, :id, :name, {:include_blank => true} %>
               Or <%= link_to "Create a new Team", "/admin/profile/#{@user.id}/edit/new-team" %><br><br>
            <% end %>
        <% end %>

The error is being throw here:错误在这里抛出:

Change Team: <%= team_builder.collection_select :id, @company.teams, :id, :name, {:include_blank => true} %>

I threw in a pry and returned the value of @company and the value of @company.teams:我抛出了一个pry,返回了@company 的值和@company.teams 的值:

#<Company:0x00007faf085aa668
 id: 1,
 name: "My Company",
 industry: "Retail",
 address: "1546 Jefferson Dr.",
 city: "Townesville",
 state: "AA",
 phone_number: "1232345678",
 email: "info@info.com",
 user_id: 1,
 created_at: Mon, 07 Jun 2021 22:31:22.169619000 UTC +00:00,
 updated_at: Mon, 07 Jun 2021 22:31:22.169619000 UTC +00:00>

[#<Team:0x00007faf00375170
  id: 2,
  name: "Marketing",
  description:
   "Develops and implements marketing campaigns from previously developed strategies.",
  company_id: 1,
  user_id: 1,
  created_at: Mon, 07 Jun 2021 22:52:15.767441000 UTC +00:00,
  updated_at: Mon, 07 Jun 2021 22:52:15.767441000 UTC +00:00>]

This is attempting to create a drop down of a company's team dependent on if the company has teams and depending on what links the user has clicked to reveal parts of the full form.这是试图创建一个公司团队的下拉列表,这取决于公司是否有团队,以及用户点击了哪些链接来显示完整表单的部分内容。 Basically this error is preventing some substantial functionality and progress towards completing this application.基本上,这个错误阻止了一些实质性的功能和完成这个应用程序的进展。 If anyone needs more information to help please let me know.如果有人需要更多信息来帮助,请告诉我。 Thanks for the help.谢谢您的帮助。

Solved it:/ there was no need for me to namespace @teams in fields_for when the original form_for was already namespaced.解决了它:/当原始 form_for 已经命名空间时,我不需要在 fields_for 中命名 @teams。 Don't go to fast people lol不要 go 快人哈哈

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM