如何在rails应用程序视图中获取ruby中的用户标识

时间:2016-07-06 22:32:51

标签: ruby-on-rails ruby

在laravel我习惯了

Auth::user()->id 

我可以参考在视图中设置数据ID或其他内容。我正在使用rails应用程序中的ruby工作,并且不能在我的生活中找到如何在rails中实现此目的的答案。我找到了很多关于current_user的答案,但我无法在视图中获得任何数据。

要清楚我试图准确设置的是

<a href="/chapters/<%= chapter.id%>" data-user-id="<%= @current_user.id %>"> Enroll </a>

这里的“current_user.id”将是用户ID。使用上面的代码(以及我能想到的任何变体)我什么都没有,没有错误但没有数据。我是否真的必须在每个控制器方法中设置它以某种方式访问​​它?有没有人有这个解决方案,他们可以指向我?

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

如果您要访问视图中的任何实例变量,则需要先定义它(在控制器或视图中)。

根据您设置身份验证的方式,您可能在某处使用current_user方法。

可以在ApplicationController中定义(它具有所有控制器共享的功能);

class ApplicationController < ActionController::Base
  def current_user
    User.find_by id: session["current_user_id"]
    # or whatever
  end
  helper_method :current_user
end

helper_method行可以在您的观看中访问它,因此您可以撰写<%= current_user.id %>

您还可以编写一些代码,以便在所有视图中都可以使用@current_user实例变量:

class ApplicationController < ActionController::Base
  before_action :define_current_user
  def define_current_user
    @current_user = current_user # call the 'current_user' method defined elsewhere
  end
end