Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.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 3中有很多:通过-在连接模型中设置额外的ID_Ruby On Rails_Ruby On Rails 3_Model_Sqlite - Fatal编程技术网

Ruby on rails 在Rails 3中有很多:通过-在连接模型中设置额外的ID

Ruby on rails 在Rails 3中有很多:通过-在连接模型中设置额外的ID,ruby-on-rails,ruby-on-rails-3,model,sqlite,Ruby On Rails,Ruby On Rails 3,Model,Sqlite,我制作了一张图表来帮助解释这个问题: 基本上,在我的“新员工”表单上,我目前有一个员工姓名的输入字段和一个列出所有公司的选择框。如果我选择一家公司并点击go,它将在“就业”中创造一个新记录。到目前为止,一切顺利 我的问题是,在选择公司时,还需要在“雇佣”模型中设置类型,该模型链接到“雇佣类型”模型。理想情况下,我可以有两种不同类型的工作,但都列出了相同的公司 提前感谢,任何帮助都将不胜感激 我不确定我是否完全理解你的问题,但我会试试看 员工模式: has_many :employments, :

我制作了一张图表来帮助解释这个问题:

基本上,在我的“新员工”表单上,我目前有一个员工姓名的输入字段和一个列出所有公司的选择框。如果我选择一家公司并点击go,它将在“就业”中创造一个新记录。到目前为止,一切顺利

我的问题是,在选择公司时,还需要在“雇佣”模型中设置类型,该模型链接到“雇佣类型”模型。理想情况下,我可以有两种不同类型的工作,但都列出了相同的公司


提前感谢,任何帮助都将不胜感激

我不确定我是否完全理解你的问题,但我会试试看

员工模式:

has_many :employments, :dependent => :destroy
has_many :companies; :through=>employments
has_many :employment_types, :through=>employments
公司模式:

has_many :employments
has_many :employees; :through=>employments
has_many :employment_types, :through=>employments
就业类型模式:

has_many :employments
has_many :companies; :through=>employments
has_many :employees; :through=>employments
就业模式:

belongs_to :employee
belongs_to :company
belongs_to :employment_type
查看代码:

<%= form_for @employee do |f| %>
  <%= f.text_field :name %>
  <% 2.times do %>
    <%= f.fields_for :employments, @employee.employments.build do |employment_fields| %>
      <%= f.select :company_id, options_from_collection_for_select(Company.all, 'id', 'name') %>
      <%= f.select :employment_type_id, options_from_collection_for_select(EmploymentType.all, 'id', 'name') %>
    <% end %>
  <% end %>
<% end %>

在您的图表中,ID字段是非标准的(model_ID),rails通常更喜欢这些字段,而不仅仅是ID。但是,您可以通过将其添加到每个模型中来超越默认主键:

set_primary_key <symbol representing primary key>
set_主键

您能否将代码发布到您的创建方法以及请求中参数散列的副本?默认的创建方法是什么?你是否使用脚手架或其他东西来创建你的控制器?看起来你的视图中有一些奇怪的东西。你能把表格寄出去吗。我们应该能够将参数从employee“=>{name”=>“David Smith”,“company\u ids”=>[“”,“3”],“company\u type\u ids”=>[“”,“1”]}更改为employee“=>{name”=>“David Smith”,“employments”=>[{“company\u id”=>,“company\u type\u ids”=>“},…}我更新了答案,允许你们两人以一种形式就业。您可能需要根据您的确切代码进行调整,但这将适用于我前面定义的模型