如何访问 current_user public_activity gem 的一部分?
How to access current_user in partial of public_activity gem?
当我尝试访问部分文件中的 current_user 时,它将包含 nil 值。
我使用设计 gem 进行登录过程。
我还使用 public_activity gem 生成通知。
我有如下通知控制器。
def index
@activities = PublicActivity::Activity.all
end
在views/notifications/index.html.erb
<%= render @activities %>
现在 views/public_activity/commontator_comment/_create.html.erb
在这个部分我想访问 current_user 但它包含 nil 值。
我没明白是什么问题。
请帮帮我。
提前致谢。
在应用程序控制器中你需要包含一个模块
class ApplicationController < ActionController::Base
include PublicActivity::StoreController
end
这会记录每个请求的控制器,使我们能够从模型中访问它。我们可以在模型中通过向 tracked 添加 owner 选项来做到这一点。
tracked owner: ->(controller, model) { controller.current_user }
您可以在此处阅读有关此内容的详细信息http://asciicasts.com/episodes/406-public-activity
跟踪用户示例。
application_controller.rb
class ApplicationController < ActionController::Base
include PublicActivity::StoreController
[.....]
# Only if devise is not used
def current_user
@current_user ||= User.find(session[:user_id]) if session[:user_id]
end
end
activities_controller.rb
class ActivitiesController < ApplicationController
def index
@activities = PublicActivity::Activity.order("created_at desc")
end
end
user.rb
class User < ActiveRecord::Base
include PublicActivity::Common
[...]
end
users_controller.rb
class UsersController < ApplicationController
def my_method
[...]
respond_to do |format|
if @my_object.save
@my_object.create_activity :create, owner: current_user
[...]
end
end
app/views/activities/index.html.haml
- @activities.each do |a|
= render_activity a
其他观点
/app
/views
/public_activity
/user
_create.html.haml
_destroy.html.haml
[_all_methods.html.haml]
查看示例
= a.owner.name + " " + a.owner.firstname
created the user
= a.trackable.name + " " + a.trackable.firstname + " (" + a.trackable.email + ")"
当我尝试访问部分文件中的 current_user 时,它将包含 nil 值。
我使用设计 gem 进行登录过程。 我还使用 public_activity gem 生成通知。
我有如下通知控制器。
def index
@activities = PublicActivity::Activity.all
end
在views/notifications/index.html.erb
<%= render @activities %>
现在 views/public_activity/commontator_comment/_create.html.erb
在这个部分我想访问 current_user 但它包含 nil 值。
我没明白是什么问题。
请帮帮我。 提前致谢。
在应用程序控制器中你需要包含一个模块
class ApplicationController < ActionController::Base
include PublicActivity::StoreController
end
这会记录每个请求的控制器,使我们能够从模型中访问它。我们可以在模型中通过向 tracked 添加 owner 选项来做到这一点。
tracked owner: ->(controller, model) { controller.current_user }
您可以在此处阅读有关此内容的详细信息http://asciicasts.com/episodes/406-public-activity
跟踪用户示例。
application_controller.rb
class ApplicationController < ActionController::Base
include PublicActivity::StoreController
[.....]
# Only if devise is not used
def current_user
@current_user ||= User.find(session[:user_id]) if session[:user_id]
end
end
activities_controller.rb
class ActivitiesController < ApplicationController
def index
@activities = PublicActivity::Activity.order("created_at desc")
end
end
user.rb
class User < ActiveRecord::Base
include PublicActivity::Common
[...]
end
users_controller.rb
class UsersController < ApplicationController
def my_method
[...]
respond_to do |format|
if @my_object.save
@my_object.create_activity :create, owner: current_user
[...]
end
end
app/views/activities/index.html.haml
- @activities.each do |a|
= render_activity a
其他观点
/app
/views
/public_activity
/user
_create.html.haml
_destroy.html.haml
[_all_methods.html.haml]
查看示例
= a.owner.name + " " + a.owner.firstname
created the user
= a.trackable.name + " " + a.trackable.firstname + " (" + a.trackable.email + ")"