2013-01-02 55 views
4

我有代码: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:// */admin/mytable/1 /编辑 但activeadmin没有看到我的代码/它显示代码与自己的模板不是我的 为什么?

+0

可能相关:https://stackoverflow.com/questions/6725233/active-admin-customize-only-new-form –

回答

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 %> 
+0

获得一个禁区属性错误,当编辑。你知道为什么吗? – BenMorganIO

+0

@BenMorganIO,Probabily您需要将这些参数列入您的控制器白名单。例如:'def model_params params.require(:model).permit(:attribute)end' – luizrogeriocn

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 
相关问题