创建后的ActiveAdmin重定向?

时间:2013-09-05 18:45:57

标签: ruby-on-rails ruby activeadmin

在activeadmin中,我想知道在创建记录后如何使用参数重定向到url?

到目前为止,我有以下代码,除了'event_id'是空的。

例如:

http://0.0.0.0:3000/admin/events/new?event_id=369877

代码

  controller do
    def create
      create! do |format|
        parameters = Rack::Utils.parse_query URI(request.referrer).query
        format.html { redirect_to '/admin/events?q[espn_event_id_equals]='+ parameters['espn_event_id'].to_s }
      end
    end
  end

重定向:

http://0.0.0.0:3000/admin/events?q[event_id_equals]=

而不是

http://0.0.0.0:3000/admin/events?q[event_id_equals]=369877

提前致谢

解决方案是解析来自request.referrer的URL以获取所需的参数。

  controller do
    def create
      create! do |format|
        parameters = Rack::Utils.parse_query URI(request.referrer).query
        format.html { redirect_to '/admin/events?q[espn_event_id_equals]='+ parameters['espn_event_id'].to_s }
      end
    end
  end

感谢您的建议:)

2 个答案:

答案 0 :(得分:2)

首先,尝试将param键入符号,而不是字符串:

format.html { redirect_to '/admin/events?q[event_id_equals]='+ params[:event_id].to_s }

如果这不起作用,则params[:event_id] nil意味着(更有可能)。因为nil.to_s是一个空字符串,所以您没有看到任何附加到指定路径的内容。

答案 1 :(得分:1)

嗯,你的结构有点令人困惑。但我认为这很简单:

format.html { redirect_to admin_events_path(q[event_id_equals]: params[:event_id]) }

如果这不起作用,那可能是因为它无法将q[event_id_equals]读作符号,在这种情况下,您应该尝试:admin_events_path("q[event_id_equals]" => params[:event_id])

可能有更好的方法来命名和控制它,但这肯定会为你解决问题。

对于active_admin 1.0.0.pre2:

format.html { redirect_to admin_events_path('q[event_id_eq]': params[:event_id]) }
相关问题