【问题标题】:infinite rediect in views rails 4视图rails 4中的无限重定向
【发布时间】:2016-07-09 07:34:11
【问题描述】:

我是 Rails 新手,所以请原谅我的愚蠢。 我正在构建一个用于任务管理的 Web 应用程序。我正在使用设计和康康康宝石。我想要的是当用户登录并且用户是管理员时,应该出现所有任务。这是我的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.,这意味着它进入了无限循环。有人可以帮我解决问题吗?

【问题讨论】:

  • 您是否考虑过被重定向到的页面是否也在发出重定向(到自身)以及为什么会发生这种情况?

标签: ruby-on-rails-4 devise cancancan


【解决方案1】:

问题在于您的重定向。

由于您是从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

【讨论】:

    猜你喜欢
    • 2016-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-11
    • 1970-01-01
    相关资源
    最近更新 更多