按照下载CSV链接,需要Active Admin重定向到登录页面

时间:2013-02-08 16:00:22

标签: ruby-on-rails ruby csv devise activeadmin

我正在开发一个cron任务,通过电子邮件发送一个链接,从Active Admin下载CSV文件。该链接看起来像是: www.adminsite.com/admin/records.csv

如果用户尚未通过系统身份验证,则主动管理员会重定向到刚刚显示“您需要先登录或注册才能继续”的页面。而不是重定向到登录页面,然后在成功验证后使用CSV下载链接。

我已经尝试过调查活跃的管理员内部,但还没有弄清楚。有什么想法吗?

谢谢!

!!!编辑!!!

我实际上是自己解决了这个问题。

因为我生成的链接导航为csv格式,所以我必须将:csv选项添加为 devise.rb 配置文件的导航格式:

config.navigational_formats = ["*/*", :html, :csv]

现在重定向到登录页面的工作正在进行,但它正在将用户带到/admin/login.csv,后者将作为空白页面返回。我假设没有csv格式的模板。

我必须将重定向从/admin/login.csv设置为/ admin / login,方法是将其添加到 routes.rb 文件中:

 devise_for :admin_users, ActiveAdmin::Devise.config do
    match "/admin/login.csv" => redirect("/admin/login")
  end

完成。

1 个答案:

答案 0 :(得分:0)

Active Admin使用设计来处理其登录,这可能是您无法找到任何内容的原因。

根据说明here

在lib / custom_failure.rb中创建此类:

class CustomFailure < Devise::FailureApp
  def redirect_url
    #return super unless [:worker, :employer, :user].include?(scope) #make it specific to a scope
     new_user_session_url(:subdomain => 'secure')
  end

  # You need to override respond to eliminate recall
  def respond
    if http_auth?
      http_auth
    else
      redirect
    end
  end
end

并将其添加到config / initializers / devise.rb:

config.warden do |manager|
  manager.failure_app = CustomFailure
end