我是新手,所以请原谅任何愚蠢行为。
我正在构建一个用于任务管理的Web应用程序。我正在使用装饰和cancancan宝石。我想要的是当用户登录时,用户是管理员,然后应该出现所有任务。这是我application.html.erb
文件中的一段代码,它正在执行此操作。
<div class="container">
<% if user_signed_in? %>
<% if can? :index, Task %>
<% controller.redirect_to tasks_path %>
<% else %>
<%= yield %>
<% end %>
<% else %>
<%= yield %>
<% end %>
</div>
现在每当用户登录时。浏览器会显示错误localhost redirected you too many times.
,这意味着它将进入无限循环。有人可以帮我解决可能出现的问题吗?
答案 0 :(得分:0)
问题出在您的重定向上。
由于您要从application.html.erb
重定向到tasks_path
,它会尝试使用application.html.erb加载任务的索引页面,该页面将再次将其重定向到tasks_path
,使其成为无限的循环。
您的要求在您的问题中不明确但如果我理解正确,您正在尝试向管理员展示所有任务,而其他用户可以看到自己的任务。
为此,您可以在控制器本身准备@tasks
。
def index
if can? :index, Task
@tasks = Task.all
else
#assuming there is an user_id column for task
@tasks = Task.find_by_user_id(current_user.id)
end