Ok, vì vậy tôi đã tìm thấy giải pháp cho vấn đề của mình. Tôi tìm thấy rất tốt viết về tình hình here. thực hiện của tôi trông như thế này:
private
def redirect_post(redirect_post_params)
controller_name = redirect_post_params[:controller]
controller = "#{controller_name.camelize}Controller".constantize
# Throw out existing params and merge the stored ones
request.parameters.reject! { true }
request.parameters.merge!(redirect_post_params)
controller.process(request, response)
if response.redirected_to
@performed_redirect = true
else
@performed_render = true
end
end
Sau đó, tôi gọi phương pháp này như sau:
redirect_post :controller => 'registrations', :action => 'order', :_method => 'put', :authenticity_token => params[:authenticity_token]
Vì vậy, tôi đã có thể yêu cầu đặt 'giả' bằng cách làm cho một yêu cầu bài (sử dụng redirect_post
) và sau đó gán 'đặt' cho thông số _method
. Nếu bạn xem xét yêu cầu put
bình thường, tất cả là post
từ biểu mẫu có thông số _method
. Vì vậy, một chút hackish của nó, nhưng nó được công việc làm.
Ngoài ra, bạn phải đảm bảo rằng khi bạn gọi redirect_post
giá trị của băm của bạn là các chuỗi nếu không thì các lỗi sẽ bị ném.
'controller.process' không hoạt động nữa trong thanh ray 4 – josal