Ruby on rails 将两个模型链接在一起时的未知属性

Ruby on rails 将两个模型链接在一起时的未知属性,ruby-on-rails,ruby,ruby-on-rails-3,foreign-keys,relationship,Ruby On Rails,Ruby,Ruby On Rails 3,Foreign Keys,Relationship,我的应用程序的简要概述 这是非常基本的,因为用户首先在一个页面上创建一组客户端,然后使用另一个页面创建作业并将其分配给用户 我的客户端模型和视图按预期工作,但我无法链接我的作业模型 class Client < ActiveRecord::Base has_and_belongs_to_many :jobs end class Job < ActiveRecord::Base has_and_belongs_to_many :clients end 这是我的工作模式 c

我的应用程序的简要概述

这是非常基本的,因为用户首先在一个页面上创建一组客户端,然后使用另一个页面创建作业并将其分配给用户

我的客户端模型和视图按预期工作,但我无法链接我的作业模型

class Client < ActiveRecord::Base 
  has_and_belongs_to_many :jobs
end

class Job < ActiveRecord::Base
  has_and_belongs_to_many :clients
end
这是我的工作模式

class Client < ActiveRecord::Base 
  has_and_belongs_to_many :jobs
end

class Job < ActiveRecord::Base
  has_and_belongs_to_many :clients
end
我有一个连接表设置,称为clients\u jobs


您的模型声明job-client是一个habtm关联,但您的表单实现时就好像job属于一个客户端一样。如果您确实希望能够将一份工作分配给多个客户,那么您的for应该如下所示:

<%= collection_select(:job, :client_ids, Client.all, :id, :name, {:include_blank => 'None'}, { :multiple => true }) %>
注意多个“客户端ID”,并允许输入多个


如果一个作业只属于一个用户,则不应使用has_和_belies_to_many:clients。

是否也可以为作业表单添加代码?使用表单代码编辑第一篇帖子。一个客户端可以有多个作业,但是的,一个唯一作业只能属于一个客户端,其文本im仍然接收未知属性:client_id
class AddClientsJobsTable < ActiveRecord::Migration
  def up
    create_table :clients_jobs, :id => false do |t|
      t.belongs_to :job, :client
      t.integer :client_id
      t.integer :job_id
  end
end

  def down
    drop_table :clients_jobs
  end
end
<%= simple_form_for :job do |f| %>
  <%= f.input :name %>
  <%= select("job", "client_id", Client.all.collect {|c| [ c.name, c.id ] }, {:include_blank => 'None'})%>
  <%= f.button :submit %>
<% end %>
<%= collection_select(:job, :client_ids, Client.all, :id, :name, {:include_blank => 'None'}, { :multiple => true }) %>