ActiveAdmin集合操作路径

时间:2012-07-17 12:30:40

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

如何在activeAdmin控制器中的collection_action的activeAdmin自定义页面部分中为“语义表单”标记设置网址?

我有:

item.rb的

ActiveAdmin.register Item, :as => "MyItems" do
  menu :parent => "My", :label => "My Items"

  collection_action :add_me, :method => :post do
    redirect_to "/" # just for testing
  end
end

自定义页面ActiveAdmin控制器

ActiveAdmin.register_page "MyItemsCustomPage" do
  content do
    @items = Item.all
    render "item", { :items => @items }
  end
end

_item.html.erb(针对自定义页面)

<%= semantic_form_for :item_add_me, :url => add_me_admin_items_path do |f| %>
    <%= f.buttons :commit %>
<% end %>

进入自定义页面后,我遇到错误:

undefined local variable or method `add_me_admin_items_path' for #<#<Class:0x00000006c3ff40>:0x00000005f8bd80>

btw,admin_items_path的语义形式适用于项目添加操作。

PS。如果我将网址更改为/admin/items/add_me并将:method设置为:post,则会收到路由错误:No route matches [POST] "/admin/items/add_me"

2 个答案:

答案 0 :(得分:1)

发现问题。

删除item.rb中的:as => "MyItems"

ActiveAdmin.register Item do

一切正常。

答案 1 :(得分:0)

这里的问题是ActiveAdmin.register Item, as: "MyItems"实际上在所有方法名称中将所有路由重命名为my_items而不是my_item。因此,在您的表单中,您可以使用add_me_admin_items_path

,而不是使用add_me_admin_my_items_path