我在'JobplansController . It creates
工作訂單and
任務based on templates called
工作計劃and
jobtask`中具有以下代碼。Rails從另一個控制器運行代碼
def copy_to_workorder
@jobplan = Jobplan.find(params[:id]) # find original jobplan
wo_attrs = @jobplan.attributes
wo_attrs.merge!({jobplan_id: @jobplan.id })
wo_attrs.delete('woschedule_id')
workorder = Workorder.create(wo_attrs)
@jobplan.jobtasks.each do |jobtask|
jobtask_attrs = jobtask.attributes
jobtask_attrs.delete('jobplan_id')
jobtask_attrs.merge!({workorder_id: workorder.id })
Task.create(jobtask_attrs)
end
redirect_to @jobplan, notice: 'Project was successfully created.'
end
運行良好使用此按鈕:
<%= link_to 'Create Workorder', copy_to_workorder_jobplans_path(:id => @jobplan.id), :class => 'btn btn-success' %>
Jobplans
有woschedule
一個MANY_TO_MANY關係。 woschedule
正用於安排基於jobplans
創建workorders
。
我試圖向woschedule
控制器添加代碼。這就是我想:
def run_jobplans
@woschedule = Woschedule.find(params[:id])
@woschedule.jobplans.each do |jobplan|
copy_to_workorder_jobplans_path(jobplan)
end
redirect_to @woschedule, notice: 'Jobplans were run successfully.'
end
我使用運行run_jobplans
按鈕是這樣的:
<%= link_to 'Run Jobplans', run_jobplans_woschedules_path(:id => @woschedule.id), :class => 'btn btn-success' %>
它執行的代碼,但沒有新workorders
獲得創建。
感謝您的幫助!
更新!執行時
但是,我怎麼打發:id
- :
我搬到了代碼的應用程序控制器在那裏我從一個jobplan
創建
def jobplan_to_workorder
@jobplan = Jobplan.find(params[:id]) # find original jobplan
wo_attrs = @jobplan.attributes
wo_attrs.merge!({jobplan_id: @jobplan.id })
wo_attrs.delete('woschedule_id')
workorder = Workorder.create(wo_attrs)
@jobplan.jobtasks.each do |jobtask|
jobtask_attrs = jobtask.attributes
jobtask_attrs.delete('jobplan_id')
jobtask_attrs.merge!({workorder_id: workorder.id })
Task.create(jobtask_attrs)
end
end
這個作品在jobplan
控制器從woschedule
控制器? woschedule has_many :jobplans
:
def run_jobplans
@woschedule = Woschedule.find(params[:id])
@woschedule.jobplans.each do |jobplan|
jobplan_to_workorder(:id => jobplan.id)
end
redirect_to @woschedule, notice: 'Jobplans were run successfully.'
end
我如何通過對jobplan參數?請參閱更新的問題。 – Reddirt
我得到了它的工作 - 再次感謝。 – Reddirt