我想使用出价表
中的用户ID更新作业表内的列工作者这是我的控制器
def worker
@bid = Bid.find(params[:id])
@job = Job.find(params[:id])
@job.update_attributes(worker: @bid.user.id)
redirect_to projects_path
end
端
和我创建了一个put" worker"在路线
这是我尝试使用
的链接<%= link_to 'Assign To Project', worker_path(bid), method: :put%>
每个循环中都有出价和工作 Logic正在使用rails控制台,但我认为错误是如何获取作业ID和出价ID,它只运行一次,但只更新第一份作业
答案 0 :(得分:2)
如果您想传递多个参数,请使用button_to
代替link_to
。
生成一个包含提交到URL的单个按钮的表单 由选项集创建。
<%= button_to 'Assign To Project',
worker_path(bid),
method: :put,
params: { bid_id: some_variable }
%>
答案 1 :(得分:0)
#config/routes.rb
resources :jobs do
put ":bid_id/worker", action: :worker #-> url.com/jobs/:job_id/:bid_id/worker
end
#app/controllers/jobs_controller.rb
class JobsController < ApplicationController
def worker
@job = Job.find params[:job_id]
@bid = Bid.find params[:bid_id]
redirect_to projects_path if @bid.update worker: @job.user
end
end
以上您将能够调用以下内容:
<%= link_to "Update Worker", jobs_worker_path(job, bid), method: :put %>
您正在做的事情真正应由ActiveRecord Associations
处理。
例如,我希望您的foreign_key
表中有jobs
worker_id
个;因此,如果您致电update_attributes worker: @job.user.id
,则为antipattern。
上面的代码应该对你有用,但它仍然是hacky。
答案 2 :(得分:0)
最后它正在工作,抱歉让我感到困惑,这是我第一次在这里提出问题,
控制器
def worker
@job = Job.find params[:job_id]
@bid = Bid.find params[:bid_id]
if @job.worker.nil?
redirect_to projects_path if @job.update_attributes worker: @bid.user.id
else
redirect_to projects_path , notice: "#{@bid.user.name} assigned on this project"
end
end
链接
<%= button_to 'Assign To Project',
job_worker_path(job, bid),
method: :put,
params: { bid_id: bid.id }%>
路线
resources :jobs do
match 'worker', to: 'jobs#worker', via:[:put]
resources :bids
end
我试图将bid.user.id分配给job.worker