2

在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

感谢您的建议:)

4

2 回答 2

3

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

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

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

于 2013-09-05T19:26:44.567 回答
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]) }
于 2013-09-05T19:07:19.743 回答