在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
感谢您的建议:)
答案 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]) }