0

时造成的模板无限渲染我有一个的has_many一个Rails应用程序:通过模型,像这样:Rails的管理员的has_many:通过关系编辑资源

class Blog < ActiveRecord::Base 
    has_many :blog_categorizations, dependent: :destroy 
    has_many :categories, :through => :blog_categorizations 
    accepts_nested_attributes_for :categories, allow_destroy: true 
end 

class Category < ActiveRecord::Base 
    has_many :blog_categorizations, dependent: :destroy 
    has_many :blog, :through => :blog_categorizations 
    accepts_nested_attributes_for :blog, allow_destroy: true 
end 

class BlogCategorization < ActiveRecord::Base 
    belongs_to :blog 
    belongs_to :category 
end 

在我的Rails管理配置我:

config.model Blog do 
    edit do 
     field :title 
     field :content 
     field :source 
     field :author 
     field :date 
     field :photos 
     field :categories 
    end 
    end 

现在,当我试图通过rails_admin添加一个新的博客,或者尝试编辑预先存在的一个,我得到的rails_admin模板无限渲染这样的:

Started GET "/admin/recipe/new?_pjax=%5Bdata-pjax-container%5D" for 127.0.0.1 at 2014-10-29 07:41:35 -0700 
    ActiveRecord::SchemaMigration Load (0.8ms) SELECT "schema_migrations".* FROM "schema_migrations" 
Processing by RailsAdmin::MainController#new as HTML 
    Parameters: {"_pjax"=>"[data-pjax-container]", "model_name"=>"recipe"} 
    User Load (1.0ms) SELECT "users".* FROM "users" WHERE "users"."id" = 1 ORDER BY "users"."id" ASC LIMIT 1 
    Rendered /Users/adam419/.rbenv/versions/2.0.0-p481/lib/ruby/gems/2.0.0/gems/rails_admin-0.6.3/app/views/rails_admin/main/_form_field.html.haml (2.3ms) 
    Rendered /Users/adam419/.rbenv/versions/2.0.0-p481/lib/ruby/gems/2.0.0/gems/rails_admin-0.6.3/app/views/rails_admin/main/_form_text.html.haml (1.0ms) 
    Rendered /Users/adam419/.rbenv/versions/2.0.0-p481/lib/ruby/gems/2.0.0/gems/rails_admin-0.6.3/app/views/rails_admin/main/_form_field.html.haml (0.2ms) 
    Rendered /Users/adam419/.rbenv/versions/2.0.0-p481/lib/ruby/gems/2.0.0/gems/rails_admin-0.6.3/app/views/rails_admin/main/_form_field.html.haml (0.2ms) 
    Rendered /Users/adam419/.rbenv/versions/2.0.0-p481/lib/ruby/gems/2.0.0/gems/rails_admin-0.6.3/app/views/rails_admin/main/_form_datetime.html.haml (1.7ms) 
    Rendered /Users/adam419/.rbenv/versions/2.0.0-p481/lib/ruby/gems/2.0.0/gems/rails_admin-0.6.3/app/views/rails_admin/main/_form_nested_many.html.haml (25.6ms) 
    Rendered /Users/adam419/.rbenv/versions/2.0.0-p481/lib/ruby/gems/2.0.0/gems/rails_admin-0.6.3/app/views/rails_admin/main/_form_nested_many.html.haml (16.2ms) 
    Rendered /Users/adam419/.rbenv/versions/2.0.0-p481/lib/ruby/gems/2.0.0/gems/rails_admin-0.6.3/app/views/rails_admin/main/_submit_buttons.html.haml (2.9ms) 
    (0.6ms) SELECT COUNT(*) FROM "blogs" 
    Recipe Load (0.7ms) SELECT "blogs".* FROM "blogs" ORDER BY blogs.id desc 
    Rendered /Users/adam419/.rbenv/versions/2.0.0-p481/lib/ruby/gems/2.0.0/gems/rails_admin-0.6.3/app/views/rails_admin/main/_form_filtering_select.html.haml (14.3ms) 
    Rendered /Users/adam419/.rbenv/versions/2.0.0-p481/lib/ruby/gems/2.0.0/gems/rails_admin-0.6.3/app/views/rails_admin/main/_form_file_upload.html.haml (4.0ms) 
    Rendered /Users/adam419/.rbenv/versions/2.0.0-p481/lib/ruby/gems/2.0.0/gems/rails_admin-0.6.3/app/views/rails_admin/main/_form_field.html.haml (0.3ms) 
    Rendered /Users/adam419/.rbenv/versions/2.0.0-p481/lib/ruby/gems/2.0.0/gems/rails_admin-0.6.3/app/views/rails_admin/main/_form_field.html.haml (1.6ms) 
    (0.4ms) SELECT COUNT(*) FROM "blog_categorizations" 
    BlogCategorization Load (0.3ms) SELECT "blog_categorizations".* FROM "blog_categorizations" ORDER BY blog_categorizations.id desc 
    Category Load (0.5ms) SELECT "categories".* FROM "categories" WHERE "categories"."id" IN (1, 5) 
    Recipe Load (0.3ms) SELECT "blogs".* FROM "blogs" WHERE "blogs"."id" IN (65) 
    Rendered /Users/adam419/.rbenv/versions/2.0.0-p481/lib/ruby/gems/2.0.0/gems/rails_admin-0.6.3/app/views/rails_admin/main/_form_filtering_multiselect.html.haml (22.1ms) 
    Rendered /Users/adam419/.rbenv/versions/2.0.0-p481/lib/ruby/gems/2.0.0/gems/rails_admin-0.6.3/app/views/rails_admin/main/_form_nested_many.html.haml (1.6ms) 
    Rendered /Users/adam419/.rbenv/versions/2.0.0-p481/lib/ruby/gems/2.0.0/gems/rails_admin-0.6.3/app/views/rails_admin/main/_form_field.html.haml (0.2ms) 
    Rendered /Users/adam419/.rbenv/versions/2.0.0-p481/lib/ruby/gems/2.0.0/gems/rails_admin-0.6.3/app/views/rails_admin/main/_form_text.html.haml (0.3ms) 
    Rendered /Users/adam419/.rbenv/versions/2.0.0-p481/lib/ruby/gems/2.0.0/gems/rails_admin-0.6.3/app/views/rails_admin/main/_form_field.html.haml (0.2ms) 
    Rendered /Users/adam419/.rbenv/versions/2.0.0-p481/lib/ruby/gems/2.0.0/gems/rails_admin-0.6.3/app/views/rails_admin/main/_form_field.html.haml (0.2ms) 
    Rendered /Users/adam419/.rbenv/versions/2.0.0-p481/lib/ruby/gems/2.0.0/gems/rails_admin-0.6.3/app/views/rails_admin/main/_form_datetime.html.haml (0.9ms) 
    Rendered /Users/adam419/.rbenv/versions/2.0.0-p481/lib/ruby/gems/2.0.0/gems/rails_admin-0.6.3/app/views/rails_admin/main/_form_nested_many.html.haml (1.3ms) 
    Rendered /Users/adam419/.rbenv/versions/2.0.0-p481/lib/ruby/gems/2.0.0/gems/rails_admin-0.6.3/app/views/rails_admin/main/_form_nested_many.html.haml (1.2ms) 
    CACHE (0.0ms) SELECT "blogs".* FROM "blogs" ORDER BY blogs.id desc 
    Rendered /Users/adam419/.rbenv/versions/2.0.0-p481/lib/ruby/gems/2.0.0/gems/rails_admin-0.6.3/app/views/rails_admin/main/_form_filtering_select.html.haml (4.0ms) 
    Rendered /Users/adam419/.rbenv/versions/2.0.0-p481/lib/ruby/gems/2.0.0/gems/rails_admin-0.6.3/app/views/rails_admin/main/_form_file_upload.html.haml (0.5ms) 
    Rendered /Users/adam419/.rbenv/versions/2.0.0-p481/lib/ruby/gems/2.0.0/gems/rails_admin-0.6.3/app/views/rails_admin/main/_form_field.html.haml (0.2ms) 
    Rendered /Users/adam419/.rbenv/versions/2.0.0-p481/lib/ruby/gems/2.0.0/gems/rails_admin-0.6.3/app/views/rails_admin/main/_form_field.html.haml (0.2ms) 
    CACHE (0.0ms) SELECT "blog_categorizations".* FROM "blog_categorizations" ORDER BY blog_categorizations.id desc 
    CACHE (0.0ms) SELECT "categories".* FROM "categories" WHERE "categories"."id" IN (1, 5) 
    CACHE (0.0ms) SELECT "blogs".* FROM "blogs" WHERE "blogs"."id" IN (65) 
    Rendered /Users/adam419/.rbenv/versions/2.0.0-p481/lib/ruby/gems/2.0.0/gems/rails_admin-0.6.3/app/views/rails_admin/main/_form_filtering_multiselect.html.haml (3.9ms) 
    Rendered /Users/adam419/.rbenv/versions/2.0.0-p481/lib/ruby/gems/2.0.0/gems/rails_admin-0.6.3/app/views/rails_admin/main/_form_nested_many.html.haml (1.1ms) 
    Rendered /Users/adam419/.rbenv/versions/2.0.0-p481/lib/ruby/gems/2.0.0/gems/rails_admin-0.6.3/app/views/rails_admin/main/_form_field.html.haml (0.2ms) 
    Rendered /Users/adam419/.rbenv/versions/2.0.0-p481/lib/ruby/gems/2.0.0/gems/rails_admin-0.6.3/app/views/rails_admin/main/_form_text.html.haml (0.3ms) 
    Rendered /Users/adam419/.rbenv/versions/2.0.0-p481/lib/ruby/gems/2.0.0/gems/rails_admin-0.6.3/app/views/rails_admin/main/_form_field.html.haml (0.2ms) 
    Rendered /Users/adam419/.rbenv/versions/2.0.0-p481/lib/ruby/gems/2.0.0/gems/rails_admin-0.6.3/app/views/rails_admin/main/_form_field.html.haml (0.2ms) 
    Rendered /Users/adam419/.rbenv/versions/2.0.0-p481/lib/ruby/gems/2.0.0/gems/rails_admin-0.6.3/app/views/rails_admin/main/_form_datetime.html.haml (1.0ms) 
    Rendered /Users/adam419/.rbenv/versions/2.0.0-p481/lib/ruby/gems/2.0.0/gems/rails_admin-0.6.3/app/views/rails_admin/main/_form_nested_many.html.haml (1.2ms) 
    Rendered /Users/adam419/.rbenv/versions/2.0.0-p481/lib/ruby/gems/2.0.0/gems/rails_admin-0.6.3/app/views/rails_admin/main/_form_nested_many.html.haml (1.2ms) 

此相同的输出只发生无限似乎并没有停下来,仿佛它是进入加载博客类别,那么类别博客的无限循环等

我怎样才能阻止这种情况的出现?

回答

0

删除accepts_nested_attributes_for:在Category.rb博客固定的问题

accepts_nested_attributes_for :blog 

这是以前在Category.rb但在公布有问题的代码中删除。

而且,留下

accepts_nested_attributes_for :blog 

但加入inverse_of:类别博客模式一样

has_many :blog, :through => :blog_categorizations, inverse_of: category 

has_many :blog, :through => :blog_categorizations, inverse_of: blog 

导致问题的原因消失。我目前使用inverse_of选项,即使它不适用于:通过模型,但出于某种原因,适用于Rails Admin的多对多。

+0

是指accepted_nested_attributes_for:blog,还是最初没有发布的代码?我有类似的问题。 – NothingToSeeHere 2014-10-31 18:32:48

+0

请看我更新的答案。 – 2014-10-31 18:55:53

+0

啊!谢谢!我会稍后再尝试。 – NothingToSeeHere 2014-10-31 19:30:11