ActiveAdmin - 如何自定义编辑操作?

时间:2013-01-02 13:36:43

标签: activeadmin

我有代码:

ActiveAdmin.register MyTable做 控制器

def edit
  #---This code doesn't work
  render :template=>"myEditTemplate.html",:layout =>"active_admin"
end

def new
  #--code in this section works fine
  render :template=>"myNewTemplate.html",:layout =>"active_admin"
end

我想在url下看到我的编辑模板代码,如下所示: HTTP:// * 的/管理/ MYTABLE / 1 /编辑 但activeadmin没有看到我的代码/它显示代码与自己的模板而不是我的 为什么呢?

2 个答案:

答案 0 :(得分:7)

您应该可以通过ActiveAdmin提供的form DSL方法执行此操作。更多详情请见documentation for ActiveAdmin和Formtastic。

不幸的是,我不相信ActiveAdmin会让您为newedit呈现完全不同的表单。虽然您可以根据@object.persisted?有条件地更改视图中的表单,但可以使用文档中的部分呈现方法。

# app/admin/post.rb
ActiveAdmin.register Post do
  form :partial => "form"
end

# app/views/admin/post/_form.html.erb
<%= semantic_form_for [:admin, @post] do |f| %>
  <% if @post.persisted? %>
    Edit Form (Maybe rendered via a partial)
    <%= f.inputs :title, :body %>
    <%= f.buttons :commit %>
  <% else %>
    New Form
  <% end %>
<% end %>

答案 1 :(得分:0)

如果提供了渲染方法的完整路径,则可以渲染您喜欢的任何视图。这样的事情:

# app/admin/post.rb 
ActiveAdmin.register Post do  
    controller do
        def edit 
            render 'admin/posts/myEditTemplate', :layout =>"active_admin"
        end
        def new
            render 'admin/posts/myNewTemplate', :layout =>"active_admin"
        end
    end
end 

# app/views/admin/posts/myEditTemplate.html.erb
    # Your erb view for edit here
# app/views/admin/posts/myNewTemplate.html.erb
    # Your erb view for new here