我有代码:
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没有看到我的代码/它显示代码与自己的模板而不是我的 为什么呢?
答案 0 :(得分:7)
您应该可以通过ActiveAdmin提供的form
DSL方法执行此操作。更多详情请见documentation for ActiveAdmin和Formtastic。
不幸的是,我不相信ActiveAdmin会让您为new
和edit
呈现完全不同的表单。虽然您可以根据@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