我正在開發我的應用程序,其中用戶可以接受或拒絕來自其他用戶的提議,但出現問題,因爲當我創建例如5個工作提議,並嘗試拒絕或接受例如第三次提議,改變了第一次提議的狀態,我不知道發生了什麼事情?我遵循這個主題Product orders between 2 users,所以也許我理解錯了什麼?請幫我Rails方法工作出錯
我的模型:
#user
has_many :jobs_given, class_name: 'Job'
has_many :offers_recived, class_name: 'Offer', through: :jobs_given, source: :offers
has_many :offers_made, class_name: 'Offer'
has_many :jobs_take, class_name: 'Job', through: :offers_made, source: :job
#job
belongs_to :seller, class_name: 'User', foreign_key: :user_id
has_many :offers
has_many :buyers, class_name: 'User', through: :offers
#offer
belongs_to :job
belongs_to :buyer, class_name: 'User', foreign_key: :user_id
has_one :seller, class_name: 'User', through: :job
def accept
self.status = true
save
end
def reject
self.status = false
save
end
我的控制器:
def create
@job = Job.find(params[:job_id])
@offer = @job.offers.create(offer_params)
@offer.user_id = current_user.id
if @offer.save
redirect_to @job
else
redirect_to :back
end
end
def accept
offer = current_user.offers_recived.find(params[:id])
offer.accept
flash[:success] = "Offer accepted!"
redirect_to :back
end
def reject
offer = current_user.offers_recived.find(params[:id])
flash[:notice] = "Offer rejected!"
offer.reject
redirect_to :back
end
private
def offer_params
params.require(:offer).permit(:pirce_offer, :status, :job_id, :user_id)
end
end
我的觀點:
#offers/form
= simple_form_for([@job, @job.offers.build]) do |f|
= f.input :pirce_offer
= f.button :submit
#offers/offer
%p= offer.pirce_offer
= link_to "Accept this offer", accept_job_offer_path(offer, @job), method: :post
= link_to "Reject this offer", reject_job_offer_path(offer, @job), method: :post
#jobs/show
= render @job.offers
= render 'offers/form'
@EDIT
Parameters: {"authenticity_token"=>"YB0i2/JmroyZBAOOyCom5NDwjxrPsGRFV6Uucnp1dNKmIGgED3H4cB7f2fnutRKCh2OjyQICQghM4Zoy13zZrw==", "job_id"=>"5", "id"=>"1"}
User Load (0.1ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? ORDER BY "users"."id" ASC LIMIT 1 [["id", 1]]
Offer Load (0.1ms) SELECT "offers".* FROM "offers" INNER JOIN "jobs" ON "offers"."job_id" = "jobs"."id" WHERE "jobs"."user_id" = ? AND "offers"."id" = ? LIMIT 1 [["user_id", 1], ["id", 1]]
(0.1ms) begin transaction
SQL (0.1ms) UPDATE "offers" SET "status" = ?, "updated_at" = ? WHERE "offers"."id" = ? [["status", "f"], ["updated_at", "2015-10-06 08:12:40.425741"], ["id", 1]]
嗯,看來你有一些調試的事情。什麼'params'到達你的'accept'方法?什麼生成它們?等等。 –
我將它添加到我的問題 – exerq