如何重构此代码?我在Sinatra上写道我需要分成一个单独的文件
<div class="row">
<div class="col-xs-3">
<% @user.posts.each do |post| %>
<a href="/posts/<%= post.id %>"><%= post.title %></a><br>
<p><%= post.body %></p>
<% unless post.comment.blank? %>
<% post.comment.each do |comment| %>
<p><%= comment.body %></p>
<% unless comment.comment.blank? %>
<% comment.comment.each do |comment2| %>
<p><%= comment2.body %></p>
<% unless comment2.comment.blank? %>
<% comment2.comment.each do |comment3| %>
<p><%= comment3.body %></p>
<% end %>
<% end %>
<% end %>
<% end %>
<% end %>
<% end %>
<% end %>
</div>
</div>
我的模型循环评论
def up
create_table :comments do |t|
t.string :body
t.integer :post_id
t.integer :comment_id
t.timestamps
end
end
这是我的迁移模型评论
答案 0 :(得分:3)
按如下方式使用它来渲染mypartial.haml(1)或 admin / mypartial.haml(2)partials,或者带有集合(3)&amp; (4):
<%= partial(:mypartial) %> <!--(1)--> <%= partial(:'admin/mypartial') %> <!--(2)--> <%= partial(:object, :collection => @objects) %> <!--(3)--> <%= partial(:'admin/object', :collection => @objects) %> <!--(4)-->
在(1)&amp; (2),部分将从他们的文件中呈现, 没有局部变量(用传入的哈希指定它们 :当地人)。在(3)&amp; (4),部分将被渲染,填充 具有集合中每个对象的局部变量对象。
所以你的代码应该是:
<div class="row">
<div class="col-xs-3">
<% @user.posts.each do |post| %>
<a href="/posts/<%= post.id %>"><%= post.title %></a><br>
<p><%= post.body %></p>
<%= partial(:comment, :collection => post.comment) %>
<% end %>
</div>
</div>
使用新文件comment.erb
:
<p><%= comment.body %></p>
<%= partial(:comment, :collection => comment.comment) %>