Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/52.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
Ruby on rails 添加动态登录和注销链接rails 3.1_Ruby On Rails_Ruby_Ruby On Rails 3_Login - Fatal编程技术网

Ruby on rails 添加动态登录和注销链接rails 3.1

Ruby on rails 添加动态登录和注销链接rails 3.1,ruby-on-rails,ruby,ruby-on-rails-3,login,Ruby On Rails,Ruby,Ruby On Rails 3,Login,我有一个非常基本的注册和登录设置正在运行,我只想知道如何在我的根页面顶部添加一个链接,根据用户是否登录显示“登录”或“注销” 我已经尝试了在这里找到的各种方法,但似乎无法让它们工作,因为它们经常会产生未定义的方法错误 最简单的方法是什么 非常感谢你的帮助 Tom如果您有一个会话变量,您可以在其中保存当前用户的id(我称之为user\u id),您可以这样做: <% if session[:user_id] %> <!-- user is logged in -->

我有一个非常基本的注册和登录设置正在运行,我只想知道如何在我的根页面顶部添加一个链接,根据用户是否登录显示“登录”或“注销”

我已经尝试了在这里找到的各种方法,但似乎无法让它们工作,因为它们经常会产生未定义的方法错误

最简单的方法是什么

非常感谢你的帮助


Tom

如果您有一个会话变量,您可以在其中保存当前用户的id(我称之为user\u id),您可以这样做:

<% if session[:user_id] %>
  <!-- user is logged in -->
  <%= link_to logout_path %>
<% else %>
  <!-- user is not logged in -->
  <%= link_to login_path %>
<% end %>

app/views/sessions/new.html.erb:
#更换这条线
#与

登录链接现在是:
注销链接:
:delete%>
答案不多,但这个Railscast对我了解rails中的身份验证工作非常有帮助。Railscast是特定于Twitter登录的,但过程基本相同。他在代码中包含了您询问的动态链接


非常感谢您的快速回复Klump,这似乎让我更接近了一步。现在唯一的问题是以下错误-未定义的局部变量或方法“logout_path”for#您必须用登录/注销操作的路径替换
logout_path
login_path
。您在routes.rb中为这些创建了条目吗?我当前的routes.rb文件如下:MadeByV2::Application.routes.draw do get“user/new”get“sessions/new”resources:users,:controller=>:user resources:sessions这有点胡说八道,因为
resource:users
应该为`get“user/new”创建路由。我猜是会话控制器负责登录和注销?您在会话控制器中定义了哪些操作?'class sessioncontroller“loggin in!”否则flash.now.alert=“无效的电子邮件或密码!“render”new“end def destroy session[:user\u id]=nil重定向\u到root\u url,:notice=>”已注销!“结束”
config/routes.rb:

resources :users

# login stuff
controller :sessions do
    get "login" => "sessions#new"
    post "login" => "sessions#create"
    delete "logout" => "sessions#destroy"
end
app/views/sessions/new.html.erb:
# replace this line
<%= form_tag new_session_path do %>
# with
<%= form_tag login_path do %>