2016-03-30 23 views
0

mckenzie https://www.youtube.com/watch?v=BI_VnnOLSKY tarafından eğitmenleri izliyordum ve yorumların her gönderi için nasıl çalıştığını anlayamıyorum. Böyle kısmi görünüyor _form:Blog yorumları nasıl çalışır?

<%= form_for([@post, @post.comments.build]) do |f| %> 
<p> 
    <%= f.label :name %> 
    <%= f.text_field :name %> 
</p> 

<p> 
    <%= f.label :description %> 
    <%= f.text_area :description %> 
</p> 

<p> 
    <%= f.submit %> 
</p> 

<% end %> 

Peki neden bu çağrısı zorundadır yapar [@post, @ post.comments.build] ??

Sonra şöyle görünür _comments başka kısmi yapar: Yani

<div> 
    <h3><%= comment.name %></h3> 
    <p><%= comment.description %></p> 
</div> 

, nasıl oluyor hiçbir döngü varsa @ işaretini kullanmadan sadece "comment.name" çağrısında diye yapabiliyor @ comment.each gibi yorum yap | İkinci satırda

<h2><%= @post.comments.count %> Comments</h2> 
<%= render @post.comments %> 

nasıl sadece kısmi _comment için bu alan bir yöntem olarak yorumlar için çağrı yapabiliyor:

Sonra böyle posta/show.html.erb her şeyi vermektedir? ?

Son olarak heres nasıl yorumlar kontrolörü:

def create 
    @post = Post.find(params[:post_id]) 
    @comment = @post.comments.create(comment_params) 

    redirect_to post_path(@post) 

end 

Çok teşekkürler!

+0

Umarım bu yardımcı olacaktır. '' '<% = form_for ([@ post, @ post.comments.build]) do | f | %> '' ' Post_comments_path (post_id) 'e gönderilmesini bildirir. Bu, o rota ve denetleyici kurulumuna sahip olmanızı gerektirir. '' 'render @ post.comments ' '' Bu, bir koleksiyonun ActiveRecord nesnelerinin bir dizisini döndürdüğü @ post.comments olarak gösterilmesini söyler. Aslında dizinin yinelemesini yapar ve her bir yorum örneğini kısmi olarak işler. http://api.rubyonrails.org/classes/ActionView/PartialRenderer.html – isaacsloan

cevap

0

render @post.comments ile yaptığı gibi render için bir dizi geçirdiğinizde bazı magick olur ve raylar _comment kısmi kullanarak her yorumunu oluşturur. Hepsi API'da açıklanmıştır.

İlgili konular