0

我有一个名为的资源patient_admissions,它包含所有 RESTful 路由。它嵌套在另一个名为patients. 我想向我的patient_admissions控制器添加另一个方法,discharge该方法更新模型中名为:discharge_date(with Date.now) 的字段并将该值保存在表中。

我希望它像方法一样工作,如果我在我的视图中的表格中列出destroy了一堆对象,我可以点击链接并出现一个确认框,我会点击“确定”,然后value 将被更新,而无需先转到另一个视图并处理表单。patient_admissionindexDischarge

我怎样才能做到这一点而不求助于像javascript这样的东西?非常感谢!

4

2 回答 2

1

在有关 Routing 的 rails 指南中,有一节介绍了添加额外的 restful 操作:

http://guides.rubyonrails.org/routing.html#adding-more-restful-actions

那里的例子将转化为:

resources :patient_admissions do
  member do
    put 'discharge'
  end
end

这将/patient_admissions/1/discharge通过 PUT 识别,并路由到 的放电动作PatientAdmissionsController

这至少可以让您为操作设置路由。

于 2012-05-18T03:16:15.063 回答
1

您可以通过将link_toorbutton_to助手与控制器的自定义成员路由结合使用来做到这一点。这是一个例子:

#routes.rb
resources :patient_adminssions do
  put :discharge, :on => :member
end

请注意,我使用 PUT 添加自定义路由,因为记录不会被删除,只是修改。所以根据 REST 标准,我认为 put 是最合适的。

# in your view
<%= button_to "Discharge", discharge_patient_admission_path(@patient_admission), :method => :put,
             :confirm => "Are you sure you want to discharge this patient?" %>

这将在隐藏表单中创建一个按钮,单击该按钮将显示确认消息,如果确认,它将向您的控制器操作发送请求,您可以在其中按照您的建议设置适当的出院日期。

于 2012-05-18T03:23:57.360 回答