我想创建一个Web应用程序。
代码如下:
class User
.....
has_many :articles
end
class Article
....
belongs_to :user
embeds_many :comments
end
class Comment
....
embedded_in :article, inverse_of: :comments
end
我想使用嵌套路线:
resources :users do
resources :articles do
resource :comments do
end
end
但Rails指南告诉我们要避免多个嵌套资源。任何人都可以给我一些好主意。提前谢谢!
答案 0 :(得分:1)
您可以使用resources :users do
resources :articles, shallow: true do
resources :comments
end
end
避免深度嵌套。
resources :users do
resources :articles, only: [:index, :new, :create]
end
resources :articles, only: [:show, :edit, :update, :destroy]
resource :comments, only: [:index, :new, :create]
end
resource :comments, only: [:show, :edit, :update, :destroy]
它将提供与以下相同的路线:
users/1
users/1/articles
articles/1
articles/1/edit
articles/1/comments
comments/1
comments/1/edit
和这样的网址:
users/1
users/1/articles/1
users/1/articles/1/edit
articles/1/comments
articles/1/comments/1
articles/1/comments/1/edit
你可以在这里阅读更多相关信息http://guides.rubyonrails.org/routing.html#nested-resources并使用它。
如果你想做的更简单,并且有这样的网址(更深的嵌套):
resources users do
resources :articles
end
resources articles, only: [] do
resources :comments
end
然后你可以这样做:
window.setInterval(function(){ check(); }, 50);
function check() {
var content1 = document.getElementsByName("content")[0].contentDocument.body;
var content3 = document.getElementsByName("content3")[0].contentDocument.body;
if(isEmpty(content3)) {
if(isEmpty(content1)) setProperties("0px, *, 0px");
else setProperties("35%, *, 0px");
} else setProperties("25%, 40%, 35%");
window.localStorage.clear();
}
function isEmpty(e) { return (e.offsetWidth!=0 || e.innerHTML!="\n"); }
function setProperties(value) { document.getElementsByTagName("frameset")[1].cols = value; }
祝你好运,玩得开心!
答案 1 :(得分:0)
由于用户和文章之间的关系并不多,因此为每篇文章指定路线及其来自家长的评论将是多余的。
resources users do
resources :articles
end
resources articles, only: [] do
resources :comments
end
答案 2 :(得分:0)
是的,你应该避免将更多的资源嵌套在另一个资源中。
你可以这样做:
resources :users do
resources :articles
end
而且:
resources :articles do
resource :comments
end
所以用户有很多文章,文章有很多评论。