2014-03-24 24 views
0

在我的ActiveAdmin项目中,我有类别和产品。每个产品都有一个类别。我能够完美地保存产品和相关的类别。我需要添加产品及其类别的功能,但要求用户能够正常保存或保存并将其他产品添加到同一类别。我想我可以只是在查询字符串中传递类别,但当我尝试重写create方法时,我得到了双重重定向。任何想法如何做到这一点?在ActiveAdmin中传递实例变量或查询字符串

这是我试过,但再次引起了重定向错误:

def create 
     @items_design = ItemsDesign.new(params[:items_design]) 
     create! do |format| 
     format.html { redirect_to "http://test.******.com:3000/admin/products/1873" } 
     end 
     super 
    end 

回答

0

您得到的原因Double Redirect是因为当您创建ItemsDesign记录成功时,您有一个重定向电话,但是without a return。因此,下一个代码被执行,这是对super的调用,其中还有一个导致错误的调用redirect

您可以通过添加and return为以下redirect_to呼叫解决Double Redirect Error

def create 
     @items_design = ItemsDesign.new(params[:items_design]) 
     create! do |format| 
     format.html { redirect_to "http://test.******.com:3000/admin/products/1873" and return } 
     end 
     super 
    end 

如果您传递category_id(在适当的键代替)作为QUERY_STRING那么您可以在create行动访问它params[:category_id]和相应地使用它。

0

不知道你的用户界面,这可能有助于了解您的用例。根据我的理解,您有一位用户填写创建产品的表单,但希望添加其他产品。

通过将category.id作为下一个产品的参数,通过沿'new'产品表单传递它来持久保存类别。