Tôi có một hành động trong bộ điều khiển mà tôi đang gặp sự cố. Đây là ứng dụng đường ray đầu tiên của tôi, vì vậy tôi không chắc chắn về các phương pháp hay nhất xung quanh đường ray.Điều khiển thoát khỏi đường ray sau khi hiển thị
Tôi có một mô hình được gọi là Nhóm và một vài hành động đi vào bộ điều khiển của nó. Tôi đã viết một thử nghiệm sẽ khiến cho bộ điều khiển hiển thị lỗi trong JSON do ID nhóm không hợp lệ. Thay vì hiển thị và thoát, có vẻ như trình điều khiển đang hiển thị và tiếp tục thực thi.
thử nghiệm
test 'should not remove group because of invalid group id' do
post(:remove, {'group_id' => '3333'})
response = JSON.parse(@response.body)
assert_response :success
assert_equal 'Success', response['message']
end
điều khiển hành động
# Post remove
# group_id
def remove
if((@group = Group.find_by_id(params[:group_id])) == nil)
render :json => { :message => "group_id not found" }
end
@group.destroy
if(!Group.exists?(@group))
render :json => { :message => "Success" }
else
render :json => { :errors => @group.errors.full_messages }
end
end
Trong bộ điều khiển, người đầu tiên nếu tuyên bố thực thi: render :json => { :message => "group_id not found" }
nhưng @group.destroy
vẫn đang được thực hiện. Điều này có vẻ phản trực giác với tôi, tôi nghĩ rằng phương thức render sẽ thoát khỏi controller.
Tại sao bộ điều khiển không thoát sau render
được gọi?
Mục đích của khối mã này là để khôi phục một cách duyên dáng khi không có bản ghi nào có thể được tìm thấy với ID được chuyển vào. Đây có phải là cách làm đúng như thế này không?
Tuyệt vời. Thêm một trở lại làm việc tuyệt vời. – codysehl