在ActiveAdmin中传递实例变量或查询字符串

时间:2014-03-24 16:39:19

标签: ruby-on-rails activeadmin

在我的ActiveAdmin项目中,我有分类和产品。每个产品都有一个类别。我能够完美地保存带有相关类别的产品。我需要能够添加产品及其类别,但是让用户能够正常保存或保存并将另一个产品添加到同一类别。我以为我可以在查询字符串中传递Category,但是当我尝试覆盖create方法时,我得到了一个双重定向。知道如何做到这一点?

这是我尝试的但又引起了重定向错误:

    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

2 个答案:

答案 0 :(得分:0)

不确定您的用户界面,这可能有助于了解您的用例。根据我的理解,您正在让用户填写创建产品的表单,但希望选择添加其他产品。

将category.id作为下一个产品的参数保留类别,方法是将其传递给新的'产品形式。

答案 1 :(得分:0)

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

您可以Double Redirect Error添加and return来解析redirect_to,如下所示:

    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]对其进行访问,并相应地使用它。