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