2012-05-12 11 views
0

私はjobsclientsという2つのモデルがあります。client_idを定義するにはどうすればよいですか?

ユーザーは簡単にクライアントを作成してから、多数のジョブを割り当てることができます。

ここに私のモデルがあります。

job.rb

class Job < ActiveRecord::Base 
    has_and_belongs_to_many :clients 
end 

client.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 %> 

すべてのクライアントを含むフォームのドロップダウンボックス。私は両方のjob_idとの接合テーブルを設定している

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 

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"} 

マイジョブ・コントローラは、非常に基本的であり、このようになっています。それを保存しようとするが、しかし、私はこれはめちゃくちゃ受け取る

それらの中に整数値としてclient_idがあります。 私は、エラーメッセージのように新しいコントローラの下にコントローラを定義し、新しいアクションを作成しただけのケースだと思います。

これは私の最初のRailsアプリですが、砂はどういうものかはっきりしていません。

ご協力いただければ幸いです!

答えて

0

あなたのフォームに問題がある可能性があります。そのフォームは、この

<%= simple_form_for @job do |f| %> 
    <%= f.input :name %> 
    <%= f.association :clients %> 
    <%= f.button :submit %> 
<% end %> 
+0

ありがとうや提案のようになります。この

<%= <%= collection_select(:job, :client_ids, Client.all, :id, :name, {:include_blank => 'None'}, { :multiple => true }) %>%> 

<%= f.association :clients %> 

と交換するようにしてください。 'アソシエーションはオブジェクトに関連付けられていないフォームでは使用できません。 ' – Keva161

+0

あなたのフォームに':job'を '@ job'に置き換えてみてください。 – Suborx

+0

@jobは元々そこにありました。しかし、私は:jobを使用する必要がありました:このエラーを受け取るときに、 'unformed method' model_name 'for NilClass:Class ' – Keva161

関連する問題