我有两个模型jobs和clients.
用户可以简单地创建一个客户端,然后分配给他们一些工作。
这是我的两个模型。
工作.rb
class Job < ActiveRecord::Base
  has_and_belongs_to_many :clients
end
客户端.rb
class Client < ActiveRecord::Base 
  has_and_belongs_to_many :jobs
end
我创建新工作的表格如下所示:
<%= simple_form_for :job do |f| %>
  <%= f.input :name %>
  <%= <%= collection_select(:job, :client_ids, Client.all, :id, :name, {:include_blank => 'None'}, { :multiple => true }) %>%>
  <%= f.button :submit %>
<% end %>
如您所见,表单上有一个包含所有客户端的下拉框。
但是,当尝试保存它时,我收到了这个混乱:
ActiveRecord::UnknownAttributeError in JobsController#create
unknown attribute: client_id
Application Trace | Framework Trace | Full Trace
app/controllers/jobs_controller.rb:22:in `new'
app/controllers/jobs_controller.rb:22:in `create'
Request
Parameters:
{"utf8"=>"✓",
 "authenticity_token"=>"0ZVYpM9vTgY+BI55Y9yJDwCJwrwSgGL9xjHq8dz5OBE=",
 "job"=>{"name"=>"Sample Monthly",
 "client_id"=>"1"},
 "commit"=>"Save Job"}
我的工作控制器非常基础,如下所示:
class JobsController < ApplicationController
  def index
    @jobs = Job.find(:all)
    respond_to do |format|
      format.html # index.html.erb
      format.xml { render :xml => @job }
    end
  end
  def new
    @jobs = Job.new 
    respond_to do |format|
      format.html # index.html.erb
      format.xml { render :xml => @job }
    end
  end
  def create
    @jobs = Job.new(params[:job])
    respond_to do |format|
      if @jobs.save
        format.html { redirect_to @jobs, notice: 'Job was successfully created.' }
        format.json { render json: @jobs, status: :created, location: @jobs }
      else
        format.html { render action: "new" }
        format.json { render json: @jobs.errors, status: :unprocessable_entity }
      end
    end
  end
  def show
    @jobs = Job.find(params[:id])
    respond_to do |format|
      format.html # show.html.erb
      format.json { render json: @jobs }
    end
  end
end
我有一个连接表设置,其中包含job_id和client_id作为整数值。所以我认为这只是在我的控制器中定义它们的一个例子,就像错误消息所暗示的那样。
这是我的第一个 Rails 应用程序,虽然我不太清楚如何。
任何帮助将不胜感激!