我有一个网站,通过就业跟踪用户公司。我需要知道我做错了什么,因为当我创建一个新的用户公司时,用户不知道它。
companies_controller.rb
class CompaniesController < ApplicationController
# GET /companies
# GET /companies.json
def index
@companies = current_user.companies
respond_to do |format|
format.html # index.html.erb
format.json { render json: @companies }
end
end
# GET /companies/1
# GET /companies/1.json
def show
@company = Company.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.json { render json: @company }
end
end
# GET /companies/new
# GET /companies/new.json
def new
@company = Company.new
respond_to do |format|
format.html # new.html.erb
format.json { render json: @company }
end
end
# GET /companies/1/edit
def edit
@company = Company.find(params[:id])
end
# POST /companies
# POST /companies.json
def create
@company = Company.new(params[:company])
current_user.employments.create!(company_id: @company.id)
respond_to do |format|
if @company.save
format.html { redirect_to @company, notice: 'Company was successfully created.' }
format.json { render json: @company, status: :created, location: @company }
else
format.html { render action: "new" }
format.json { render json: @company.errors, status: :unprocessable_entity }
end
end
end
# PUT /companies/1
# PUT /companies/1.json
def update
@company = Company.find(params[:id])
respond_to do |format|
if @company.update_attributes(params[:company])
format.html { redirect_to @company, notice: 'Company was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: "edit" }
format.json { render json: @company.errors, status: :unprocessable_entity }
end
end
end
# DELETE /companies/1
# DELETE /companies/1.json
def destroy
@company = Company.find(params[:id])
@company.destroy
respond_to do |format|
format.html { redirect_to companies_url }
format.json { head :no_content }
end
end
end
答案 0 :(得分:3)
问题在于您的创建操作,特别是行
current_user.employments.create!(company_id: @company.id)
这是在保存公司记录之前执行的,因此它没有id(== nil)。只需在
之后移动该行if @company.save
它应该通过:through关系将它附加到current_user。