控制不输入format.html块

时间:2016-05-25 09:47:52

标签: ruby-on-rails-4.2 ruby-2.1.3

我的控制器方法如下:

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问题还是我错过了关于请求对象的一些概念。该请求是"删除"类型。感谢。

1 个答案:

答案 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