如果不使用会话,应该使用什么来通过不同的控制器#操作来保存实例变量?
以下是问题的一个示例:
住院 has_one 处方
来自住院#show我有一个link_to处方#new,附带参数如下所示:
<%= link_to t('hospitalizations.prescription'), new_prescription_path(hospitalization_id: @hospitalization.id,...)
诀窍是:处方#new我可以检索
@hospitalization = Hospitalization.find_by(id: params[:hospitalization_id])
但是,当我按下提交时,在尝试执行类似
之类的操作时,处理#create, @hospitalization 回答 nil@prescription = @hospitalization.build_prescription(prescription_params)
如何最好地实例化这些参数,以便它们在需要的控制器#操作之间持续存在或轻松携带?我该如何实例化所属的模型处方?我应该直接把ID放在那里处方#new吗?喜欢:
@prescription = Prescription.new(hospitalization_id: params[:hospitalization_id])
答案 0 :(得分:0)
以这种方式使用neseted resources:
resources hospitalizations do
resource :prescription
end
这样你的路径看起来像这样:
/hospitalizations/:hospitalization_id/prescription
您可以使用以下内容生成它:
new_hospitalization_prescription_path(@hospitalization)
现在您可以在控制器中以params[:hospitalization_id]
的形式访问参数。例如,在create
的{{1}}方法中:
PrescriptionController