我的控制器方法如下:
def forcefully_logout
process_license_pool_obj = Vendor::ProcessLicensePool.new(@user.vendor)
@user.authentication_token = ''
if @user.save
if process_license_pool_obj.update_license_pool?(false, @user.id.to_s, @user.vendor_id.to_s)
respond_to do |format|
format.html do
redirect_to license_management_vendor_url(@user.vendor_id), notice: 'User was successfully logged-out and license has been released.'
end and return
end
end
end
respond_to do |format|
format.html { redirect_to license_management_vendor_url(@user.vendor_id), warn: 'Unable to forcefully logout user, contact admin.' }
end
end
,此方法的路线如下: -
resources :users, except: [:create] do
member { delete 'forcefully_logout', to: 'users#forcefully_logout' }
end
虽然该方法工作正常,但它给错误的模板"并且控件不会进入' format.html' block意味着代替重定向方法尝试渲染模板。在服务器日志中,此请求的消息是"开始删除并通过此方法处理为html" (因为请求也是html类型)但是redirect_to没有被命中。这个问题的可能原因是这个rails问题还是我错过了关于请求对象的一些概念。该请求是"删除"类型。感谢。
答案 0 :(得分:0)
实际上"并返回" " format.html"之后的声明阻止导致流量不进入' format.html'块,工作代码如下:
def forcefully_logout
process_license_pool_obj = Vendor::ProcessLicensePool.new(@user.vendor)
@user.authentication_token = ''
if @user.save
if process_license_pool_obj.update_license_pool?(false, @user.id.to_s, @user.vendor_id.to_s)
respond_to do |format|
format.html do
redirect_to license_management_vendor_url(@user.vendor_id), notice: 'User was successfully logged-out and license has been released.' and return
end
end
end
end
respond_to do |format|
format.html { redirect_to license_management_vendor_url(@user.vendor_id), warn: 'Unable to forcefully logout user, contact admin.' }
end
end