Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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 创建具有关联的记录-活动管理员_Ruby On Rails_Ruby On Rails 4_Associations_Activeadmin - Fatal编程技术网

Ruby on rails 创建具有关联的记录-活动管理员

Ruby on rails 创建具有关联的记录-活动管理员,ruby-on-rails,ruby-on-rails-4,associations,activeadmin,Ruby On Rails,Ruby On Rails 4,Associations,Activeadmin,我正在使用active admin,似乎正在努力创建与关联的记录。我以正常的方式设置了这个 class Membership < ActiveRecord::Base belongs_to :member attr_accessible :membership_type end class Member < ActiveRecord::Base has_one :membership accepts_nested_attributes_for :membership att

我正在使用active admin,似乎正在努力创建与关联的记录。我以正常的方式设置了这个

class Membership < ActiveRecord::Base
belongs_to :member
attr_accessible :membership_type

end

class Member < ActiveRecord::Base
 has_one :membership
 accepts_nested_attributes_for :membership
 attr_accessible :membership_attributes, :forename, :middlename, :surname, :house_no, :house_name, :street, :town, :postcode, :home_tel, :mobile_tel, :work_tel, :email

end
这会显示一个选择框,我可以从中选择各种成员类型,但在创建记录时,我似乎没有传递正确的值

这是发布内容的一个示例

member[forename]:Name 1
member[middlename]:Name 2
member[surname]:Name 3
member[house_no]:1
member[house_name]:
member[street]:Test Street
member[town]:Test Town
member[postcode]:CF23 7BD
member[home_tel]:01633222222
member[mobile_tel]:07864582356
member[work_tel]:01633555555
member[email]:test@mail.com
membership_attributes"=>{"membership_type"=>"Student"}
commit:Create Member 
这似乎不对,是吗?当我尝试查看记录时也是如此

column :memberships do |member|
  member.memberships.map{ |ms| ms.membership_type}
end
我得到以下mysql错误

Mysql2::Error: Unknown column 'memberships.member_id' in 'where clause': SELECT `memberships`.* FROM `memberships`  WHERE `memberships`.`member_id` = 10
有人能给我指一下正确的方向吗?或者有人能看出我错在哪里吗


非常感谢

而不是
f。输入:会员身份
尝试以下方法:

f.has_many :memberships do |pf|
    pf.input :membership_type
end
然后像这样关闭成员对象字段

f.inputs "Member Registration" do
    f.input :forename
    f.input :middlename
    f.input :surname
    ...
end
因此,您的表单应该如下所示:

form do |f|
  f.inputs "Member Registration" do
    f.input :forename
    f.input :middlename
    f.input :surname
    # .. the rest of your fields
  end
  f.has_many :memberships do |pf|
    pf.input :membership_type
  end
  f.actions
end

关于MySQL错误,我认为要使关联正常工作,需要将列member_id添加到memberships表中。您可以使用创建迁移

rails g migration add_member_id_to_memberships member_id:integer
然后迁移

bundle exec rake db:migrate

这似乎不起作用,我恐怕,我现在有一个按钮,链接到没有标记为“会员注册”,我想我的关系可能是不正确的,应该是一个has_-one?你介意复制或截图你的整个/admin/Member.rb和你的会员和会员类型模型吗?(如果你愿意,你可以将它们发送到我的收件箱)我已经更新了我的问题,但是我已经将关系更改为一个成员有一个关系,我认为这是正确的逻辑
bundle exec rake db:migrate