Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails 4-协会_Ruby On Rails_Associations_Model Associations - Fatal编程技术网

Ruby on rails Rails 4-协会

Ruby on rails Rails 4-协会,ruby-on-rails,associations,model-associations,Ruby On Rails,Associations,Model Associations,我正在尝试在Rails 4中制作一个应用程序 我有个人资料模型和组织模型 Profile.rb:属于:组织 organization.rb有很多:简介 My profile表有一个名为:Organization_id的属性 在我的个人资料显示页面中,我想显示个人资料所属组织的名称 我有: <%= @profile.organisation.try(:title) %> 我在配置文件控制器中的强参数,但没有任何区别 当我填写个人资料编辑表时,我可以选择

我正在尝试在Rails 4中制作一个应用程序

我有个人资料模型和组织模型

Profile.rb:属于:组织 organization.rb有很多:简介

My profile表有一个名为:Organization_id的属性

在我的个人资料显示页面中,我想显示个人资料所属组织的名称

我有:

                <%= @profile.organisation.try(:title) %>
我在配置文件控制器中的强参数,但没有任何区别

当我填写个人资料编辑表时,我可以选择一个组织。我勾选了这个框,希望在profiles show页面中看到它的标题。它是空白的

当我进入控制台并尝试:

o = Organisation.where(profile_id:9)
它给出了以下错误:

  Organisation Load (6.1ms)  SELECT "organisations".* FROM "organisations" WHERE "organisations"."profile_id" = 9
PG::UndefinedColumn: ERROR:  column organisations.profile_id does not exist
LINE 1: ...LECT "organisations".* FROM "organisations" WHERE "organisat...
                                                             ^
: SELECT "organisations".* FROM "organisations" WHERE "organisations"."profile_id" = 9
ActiveRecord::StatementInvalid: PG::UndefinedColumn: ERROR:  column organisations.profile_id does not exist
LINE 1: ...LECT "organisations".* FROM "organisations" WHERE "organisat...
ActiveRecord::RecordNotFound in ProfilesController#show
Couldn't find Organisation with 'id'=

Extracted source (around line #17): - it points to this line:
    @organisation = Organisation.find(params[:organisation_id])
有人能看出我做错了什么吗

Vishal的建议:

Organisation.includes(:profiles).where(:profile => {:id => 9})
SyntaxError: (irb):55: syntax error, unexpected tCONSTANT, expecting end-of-input
...s.map(&:table_name)Organisation.includes(:profiles).where(:p...
Organisation.where(profile_ids: [9])
  Organisation Load (35.5ms) 
SELECT "organisations".* FROM "organisations" WHERE "organisations"."profile_ids" = 9
PG::UndefinedColumn: ERROR:  column organisations.profile_ids does not exist
LINE 1: ...LECT "organisations".* FROM "organisations" WHERE "organisat...
                                                             ^
: SELECT "organisations".* FROM "organisations" WHERE "organisations"."profile_ids" = 9
ActiveRecord::StatementInvalid: PG::UndefinedColumn: ERROR:  column organisations.profile_ids does not exist
LINE 1: ...LECT "organisations".* FROM "organisations" WHERE "organisat...
Organisation.includes(:profiles).where(:profiles => {:id => 9})
  SQL (18.9ms)  SELECT "organisations"."id" AS t0_r0, "organisations"."title" AS t0_r1, "organisations"."logo" AS t0_r2, "organisations"."banner" AS t0_r3, "organisations"."org_type" AS t0_r4, "organisations"."email_format" AS t0_r5, "organisations"."website" AS t0_r6, "organisations"."formal_name" AS t0_r7, "organisations"."company_number" AS t0_r8, "organisations"."jurisdiction_of_incorporation" AS t0_r9, "organisations"."onboarded" AS t0_r10, "organisations"."cf_docs" AS t0_r11, "organisations"."user_id" AS t0_r12, "organisations"."created_at" AS t0_r13, "organisations"."updated_at" AS t0_r14, "organisations"."abn" AS t0_r15, "profiles"."id" AS t1_r0, "profiles"."user_id" AS t1_r1, "profiles"."title" AS t1_r2, "profiles"."hero" AS t1_r3, "profiles"."overview" AS t1_r4, "profiles"."occupation" AS t1_r5, "profiles"."external_profile" AS t1_r6, "profiles"."working_languages" AS t1_r7, "profiles"."created_at" AS t1_r8, "profiles"."updated_at" AS t1_r9, "profiles"."organisation_id" AS t1_r10 FROM "organisations" LEFT OUTER JOIN "profiles" ON "profiles"."organisation_id" = "organisations"."id" WHERE "profiles"."id" = $1  [["id", 9]]
彼得的建议:

Organisation.includes(:profiles).where(:profile => {:id => 9})
SyntaxError: (irb):55: syntax error, unexpected tCONSTANT, expecting end-of-input
...s.map(&:table_name)Organisation.includes(:profiles).where(:p...
Organisation.where(profile_ids: [9])
  Organisation Load (35.5ms) 
SELECT "organisations".* FROM "organisations" WHERE "organisations"."profile_ids" = 9
PG::UndefinedColumn: ERROR:  column organisations.profile_ids does not exist
LINE 1: ...LECT "organisations".* FROM "organisations" WHERE "organisat...
                                                             ^
: SELECT "organisations".* FROM "organisations" WHERE "organisations"."profile_ids" = 9
ActiveRecord::StatementInvalid: PG::UndefinedColumn: ERROR:  column organisations.profile_ids does not exist
LINE 1: ...LECT "organisations".* FROM "organisations" WHERE "organisat...
Organisation.includes(:profiles).where(:profiles => {:id => 9})
  SQL (18.9ms)  SELECT "organisations"."id" AS t0_r0, "organisations"."title" AS t0_r1, "organisations"."logo" AS t0_r2, "organisations"."banner" AS t0_r3, "organisations"."org_type" AS t0_r4, "organisations"."email_format" AS t0_r5, "organisations"."website" AS t0_r6, "organisations"."formal_name" AS t0_r7, "organisations"."company_number" AS t0_r8, "organisations"."jurisdiction_of_incorporation" AS t0_r9, "organisations"."onboarded" AS t0_r10, "organisations"."cf_docs" AS t0_r11, "organisations"."user_id" AS t0_r12, "organisations"."created_at" AS t0_r13, "organisations"."updated_at" AS t0_r14, "organisations"."abn" AS t0_r15, "profiles"."id" AS t1_r0, "profiles"."user_id" AS t1_r1, "profiles"."title" AS t1_r2, "profiles"."hero" AS t1_r3, "profiles"."overview" AS t1_r4, "profiles"."occupation" AS t1_r5, "profiles"."external_profile" AS t1_r6, "profiles"."working_languages" AS t1_r7, "profiles"."created_at" AS t1_r8, "profiles"."updated_at" AS t1_r9, "profiles"."organisation_id" AS t1_r10 FROM "organisations" LEFT OUTER JOIN "profiles" ON "profiles"."organisation_id" = "organisations"."id" WHERE "profiles"."id" = $1  [["id", 9]]
Peter的建议修改为(使profile_id为单数而非复数):

Vishal的下一个建议:

Organisation.includes(:profiles).where(:profile => {:id => 9})
SyntaxError: (irb):55: syntax error, unexpected tCONSTANT, expecting end-of-input
...s.map(&:table_name)Organisation.includes(:profiles).where(:p...
Organisation.where(profile_ids: [9])
  Organisation Load (35.5ms) 
SELECT "organisations".* FROM "organisations" WHERE "organisations"."profile_ids" = 9
PG::UndefinedColumn: ERROR:  column organisations.profile_ids does not exist
LINE 1: ...LECT "organisations".* FROM "organisations" WHERE "organisat...
                                                             ^
: SELECT "organisations".* FROM "organisations" WHERE "organisations"."profile_ids" = 9
ActiveRecord::StatementInvalid: PG::UndefinedColumn: ERROR:  column organisations.profile_ids does not exist
LINE 1: ...LECT "organisations".* FROM "organisations" WHERE "organisat...
Organisation.includes(:profiles).where(:profiles => {:id => 9})
  SQL (18.9ms)  SELECT "organisations"."id" AS t0_r0, "organisations"."title" AS t0_r1, "organisations"."logo" AS t0_r2, "organisations"."banner" AS t0_r3, "organisations"."org_type" AS t0_r4, "organisations"."email_format" AS t0_r5, "organisations"."website" AS t0_r6, "organisations"."formal_name" AS t0_r7, "organisations"."company_number" AS t0_r8, "organisations"."jurisdiction_of_incorporation" AS t0_r9, "organisations"."onboarded" AS t0_r10, "organisations"."cf_docs" AS t0_r11, "organisations"."user_id" AS t0_r12, "organisations"."created_at" AS t0_r13, "organisations"."updated_at" AS t0_r14, "organisations"."abn" AS t0_r15, "profiles"."id" AS t1_r0, "profiles"."user_id" AS t1_r1, "profiles"."title" AS t1_r2, "profiles"."hero" AS t1_r3, "profiles"."overview" AS t1_r4, "profiles"."occupation" AS t1_r5, "profiles"."external_profile" AS t1_r6, "profiles"."working_languages" AS t1_r7, "profiles"."created_at" AS t1_r8, "profiles"."updated_at" AS t1_r9, "profiles"."organisation_id" AS t1_r10 FROM "organisations" LEFT OUTER JOIN "profiles" ON "profiles"."organisation_id" = "organisations"."id" WHERE "profiles"."id" = $1  [["id", 9]]
下面是彼得的答案

我使我的配置文件控制器显示操作:

  def show
    @profile = Profile.includes(:industries).find(params[:id])
    @organisation = Organisation.find(params[:organisation_id])
    @profiles = @organisation.profiles
  end
当我保存并重试时,出现以下错误:

  Organisation Load (6.1ms)  SELECT "organisations".* FROM "organisations" WHERE "organisations"."profile_id" = 9
PG::UndefinedColumn: ERROR:  column organisations.profile_id does not exist
LINE 1: ...LECT "organisations".* FROM "organisations" WHERE "organisat...
                                                             ^
: SELECT "organisations".* FROM "organisations" WHERE "organisations"."profile_id" = 9
ActiveRecord::StatementInvalid: PG::UndefinedColumn: ERROR:  column organisations.profile_id does not exist
LINE 1: ...LECT "organisations".* FROM "organisations" WHERE "organisat...
ActiveRecord::RecordNotFound in ProfilesController#show
Couldn't find Organisation with 'id'=

Extracted source (around line #17): - it points to this line:
    @organisation = Organisation.find(params[:organisation_id])

事实上,问题的出现是因为表单输入字段要求一个复选框。这是一个问题,因为它需要一系列输入(当每个配置文件只能有一个组织时)。当我删除复选框要求时,表单输入元素变成一个选择列表。然后,submit可以保存组织,标题显示正确。

实际上,问题是因为表单输入字段要求复选框。这是一个问题,因为它需要一系列输入(当每个配置文件只能有一个组织时)。当我删除复选框要求时,表单输入元素变成一个选择列表。然后,submit可用于保存组织,标题显示正确。

嘿,在您的组织表中没有名称为
profile\u id
的列,并且您在
where
子句中对该列添加了条件,因此为您提供了此issueHi Vishal,但为什么我需要在组织中添加profile\u id,当档案属于组织时?是,不需要将档案id放在那里,但您可以选择这种方式。另一方面,您可以编写查询,如
organization.includes(:profiles)。其中(:profiles=>{:id=>9})
profile有组织id,组织根据您的关联有组织id。表单中的值应该是organization_id而不是id。在您的示例查询中,它应该是:organization.where(profile_id:[9]),但您实际需要:profile.where(organization_id:params[:organization_id])@VishalJAIN no,OP不需要
profile_id
列在
Organizations
表中,只有
profiles上的
organization\u id
嘿,在您的组织表中没有名为
profile\u id
的列,您在
where
子句中对该列设置了条件,所以给您这个问题hi Vishal,但为什么我需要在Org中设置profile\u id,当档案属于组织时?是,不需要将档案id放在那里,但您可以选择这种方式。另一方面,您可以编写查询,如
organization.includes(:profiles)。其中(:profiles=>{:id=>9})
profile有组织id,组织根据您的关联有组织id。表单中的值应该是organization_id而不是id。在您的示例查询中,它应该是:organization.where(profile_id:[9]),但您实际需要:profile.where(organization_id:params[:organization_id])@VishalJAIN no,OP不需要
profile_id
列在
Organizations
表中,只有
配置文件上的
组织id