active admin collection_select并传递给控制器​​覆盖create方法

时间:2012-04-03 04:45:28

标签: ruby-on-rails ruby ruby-on-rails-3 activeadmin

我的activeadmin中有列表下拉列表,用于填充配方和菜单。我正在尝试覆盖create方法,但它无法正常工作

<%= semantic_form_for [:admin, @menu_recipe] do |f| %>

<p>
 <%= f.collection_select :recipe_id,
  Recipe.all,:id,:name,:prompt => true%>
</p>
<p>
<%= f.collection_select :menu_id,
  Menu.all,:id,:name,:prompt => true%>
</p>   
<%= f.buttons :commit %>
<%end%>

每当我尝试捕捉并创建或分组时,它都会返回Couldn't find Recipe without an ID error

我覆盖的活动管理员控制器是

ActiveAdmin.register MenuRecipe do
    menu :parent => "Manage Package"

   form :partial => "menu_recipe"

    controller do
      def new
        new! do |format|
          @menu_recipe = MenuRecipe.new  
        end
      end

      def create
        create! do |format|
          recipe = Recipe.find(params[:recipe_id])
          menu = Menu.find(params[:menu_id])
          @menu_recipe = @menu.add_recipe(menu.id)

          if @menu_recipe.save
            redirect_to {admin_menu_recipe_url}
          end
        end  
      end
    end

end
我正在做对吗?如果需要什么,请提前询问

1 个答案:

答案 0 :(得分:0)

我的猜测是你获得recipe_id的方式。我可能会调试params并查看实际值是什么。

您可能需要执行以下操作:

params[:menu_recipe][recipe_id]