On Wednesday, June 28, 2017 at 8:27:57 AM UTC-4, Walter Lee Davis wrote: > > > > On Jun 28, 2017, at 1:38 AM, fugee ohu <fuge...@gmail.com <javascript:>> > wrote: > > > > > > > > On Tuesday, June 27, 2017 at 8:01:40 PM UTC-4, Walter Lee Davis wrote: > > > > > On Jun 27, 2017, at 9:12 AM, fugee ohu <fuge...@gmail.com> wrote: > > > > > > > > > > > > On Tuesday, June 27, 2017 at 7:32:33 AM UTC-4, Walter Lee Davis wrote: > > > > > > > On Jun 27, 2017, at 12:40 AM, fugee ohu <fuge...@gmail.com> wrote: > > > > > > > > > > > > > > > > On Wednesday, June 21, 2017 at 8:34:17 AM UTC-4, Walter Lee Davis > wrote: > > > > > > > > > On Jun 21, 2017, at 3:52 AM, fugee ohu <fuge...@gmail.com> wrote: > > > > > > > > > > How do I give new.js.erb the right element name > > > > > $('#comment_post)click.(function(){ > > > > > In this line there's no id number > > > > > > > > I think you may have missed a few bits of my reply. We are not > observing a click any more. Everything is out of the jQuery pool, and fully > into the RJS pool. If you're viewing this in the Google Groups (Web) view, > you may need to expand all of the little ... ellipses in order to see all > of my threaded replies. > > > > > > > > in the second content_tag_for statement collection: post.comments > fails to produce anthing for comment.body when the _comment.html.erb > partial is rendered > > > > > > > > _post.erb.html > > > > > > > > <%= content_tag_for(:div, post) do %> > > > > <%= simple_format post.content %> > > > > <% unless post.attachment.blank? %> > > > > <%= image_tag(post.attachment, height: 250) %><br> > > > > <% end %> > > > > <%= content_tag_for(:div, post, 'comments') do %> > > > > <%= render '/comments/comment', collection: post.comments %> > > > > <%= content_tag_for(:div, post, 'comment_form_holder') do %> > > > > <%= link_to 'Comment', > new_comment_path('comment[commentable_id]': post.id, > 'comment[commentable_type]': 'Post') %><br><br> > > > > <% end %> > > > > <% end %> > > > > <% end %> > > > > > > > > > > > > _comment.html.erb > > > > > > > > <%= content_tag_for(:div, @comments) do %> > > > > <%= simple_format comment.body %> > > > > <%= comment.post.user.first_name comment.post.user.last_name %> > > > > <% end %> > > > > > > > > > content_tag_for builds the DIV and gives it an ID based on a single > item passed to it. I'm not sure what it would make of a collection of > comments, which is what you're passing it here. What I think you need to do > is change @comments to comment, to match the rest of the local variables > inside the partial. @comments doesn't exist inside the partial unless you > render it in a scope that already had that set as an instance variable. > comment exists inside the partial because the partial is named comment, but > that's only true if you are either rendering it with the "shortcut" > collection: @comments, where @comments is an array or association of > individual comment instances, or are rendering it one at a time, and > passing in locals: { comment: @comment } or similar. Because you are > doubly-nested at this point, inside _post.html.erb, it is best to stick > with the local variables that you have passed along, and not rely on the > surrounding render context to magically provide variables for you. > > > > > > Try just changing @comments to comment in the first line of your > _comment.html.erb, leave everything else alone, and see if it renders then. > Just to be certain, check in the console whether you have any comments for > that post you are trying to render. You should not see anything at all (the > comment partial won't even render) if post.comments is empty. > > > > > > Walter > > > > > > I took out the div containers (content_tag_for) and just left: > > > <%= simple_format comment.body %> > > > <%= comment.post.user.first_name comment.post.user.last_name %> > > > but I still get the error that comment is undefined > > > > Where are you calling render on this template? Copy and paste the code > here. Also copy and paste the error message so we can compare line numbers > from the error with line numbers in your code. > > > > Is the code that is quoted above exactly what you are using in your > outer post partial? What should be happening if you call render > 'comments/comment', collection: post.comments from inside the post.html.erb > partial is that each of the post comments will be rendered one after > another, and inside of each of those render calls, the instance variable > 'comment' will be loaded with the one comment that is being rendered. This > should Just Workâ˘. > > > > Walter > > > > > > > > -- > > > You received this message because you are subscribed to the Google > Groups "Ruby on Rails: Talk" group. > > > To unsubscribe from this group and stop receiving emails from it, send > an email to rubyonrails-ta...@googlegroups.com. > > > To post to this group, send email to rubyonra...@googlegroups.com. > > > To view this discussion on the web visit > https://groups.google.com/d/msgid/rubyonrails-talk/eea548b0-8979-4f0c-9662-9c720f5f35db%40googlegroups.com. > > > > > For more options, visit https://groups.google.com/d/optout. > > > > > > > > After some reading it occurred to me explicitly calling the comment > partial with <%= render "comments/comment", collection: post.comments %> > was defeating the convention for the variable as partial name so I replaced > it with <%= render @comments %> and then it worked Of course I had to set > @comments=post.comments first on the preceeding line I'd like to know how I > could have gotten it working without treating @comments as a standalone > resource (in the context of rendering partials) like that > > > > Ugh. I have seen this before. The reason is that you were calling : > > render 'comments/comment' > > rather than: > > render partial: 'comments/comment' > > The former (without the partial keyword) seems to prefer the instance > variable, and ignore anything else that you pass to it like collection: > post.comments. If I missed that keyword in my examples, I am sorry, that > should have been there. > > Walter > > > -- > > You received this message because you are subscribed to the Google > Groups "Ruby on Rails: Talk" group. > > To unsubscribe from this group and stop receiving emails from it, send > an email to rubyonrails-ta...@googlegroups.com <javascript:>. > > To post to this group, send email to rubyonra...@googlegroups.com > <javascript:>. > > To view this discussion on the web visit > https://groups.google.com/d/msgid/rubyonrails-talk/6011d4f7-4c4b-4477-8e64-313e4f6b0c77%40googlegroups.com. > > > > For more options, visit https://groups.google.com/d/optout. > > Are there any situations where a partial would have a plural name?
-- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscr...@googlegroups.com. To post to this group, send email to rubyonrails-talk@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/9f98d35c-2669-4ce9-a0c1-ba5c9174435f%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.