Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在不使用Javascript的情况下在Rails中创建注销按钮?_Javascript_Ruby On Rails_Ruby - Fatal编程技术网

如何在不使用Javascript的情况下在Rails中创建注销按钮?

如何在不使用Javascript的情况下在Rails中创建注销按钮?,javascript,ruby-on-rails,ruby,Javascript,Ruby On Rails,Ruby,我正在创建一个不使用任何Javascript的Rails应用程序,我想知道如何实现一个注销按钮来将会话设置为“nil”。大多数教程建议使用“method::delete”,但这需要使用JavaScript 会话控制器: class SessionsController < ApplicationController def new end def create user = User.find_by_username(params[:session][:name])

我正在创建一个不使用任何Javascript的Rails应用程序,我想知道如何实现一个注销按钮来将会话设置为“nil”。大多数教程建议使用“method::delete”,但这需要使用JavaScript

会话控制器:

class SessionsController < ApplicationController
  def new

  end

  def create
    user = User.find_by_username(params[:session][:name])
    if user && user.authenticate(params[:session][:password])
      session[:user_id] = user.id
      redirect_to '/posts'
    else
      session[:user_id] = nil
      flash[:warning] = "Failed login- try again"
      redirect_to '/login'
    end 
  end

  def destroy
    session[:session_id] = nil 
    redirect_to login_path 
  end
end
class sessioncontroller
您可以使用
按钮来
而不是
链接到

<%= button_to logout_path, method: :destroy %>
这将使整个会话存储cookie和cookie无效。更好的是,首先不要重新发明身份验证轮子。

“建议使用
method::delete
,但这需要使用JavaScript”-一点也不需要。使用纯HTML
def destroy
  reset_session
  redirect_to login_path 
end