On Thursday, June 15, 2017 at 6:33:02 PM UTC-4, Walter Lee Davis wrote: > > > > On Jun 15, 2017, at 6:12 PM, fugee ohu <fuge...@gmail.com <javascript:>> > wrote: > > > > > > > > On Thursday, June 15, 2017 at 5:11:29 PM UTC-4, Walter Lee Davis wrote: > > If you are doing this in a RJS template, then you will have the instance > variables available to you, whatever you set at the controller that is > rendering this. Just render the form using the @comment you created in the > controller. > > > > I just posted an answer to a different question you raised, where I show > you how to get the unique IDs on the DOM elements holding members of a > collection. You can use that technique with RJS or with a single JS file > that does not have any ERB replacement in it. > > > > Walter > > > > > On Jun 15, 2017, at 4:23 PM, fugee ohu <fuge...@gmail.com> wrote: > > > > > > This is my jquery > > > $('.new_comment_button').after("<%= j render('form') %>"); > > > I need > > > $('.new_comment_button') to be contructed from the values of variables > because i can't give every post the same id I don't think using class > instead of id in my view would make a difference How can i do this? > > > > > > -- > > > 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/941f357b-b82a-4e27-82b4-1effb5303d12%40googlegroups.com. > > > > > For more options, visit https://groups.google.com/d/optout. > > > > > > Can I have the link And once I get the DOM id's how do i plug them into > my js.erb file to change $('.new_comment_button') to let's say > $('.new_comment_button2') > > > > There are a number of different ways to solve this problem. The way I > imagine your app, you want to be able to comment on an item, but without > having a bunch of forms rendered in the page (one for each item in a > collection). Right so far? So the static (non-RJS) way to do this with > jQuery is to use the DOM and JS to send the correctly unique variable to > your comments controller to let it know which item you are commenting on. > > # items_controller.rb > > def index > @items = Item.all.page(params[:page]) > end > > # views/items/index.html.erb > <ul id="items"> > <%= render @items %> > </ul> > > # views/items/_item.html.erb > <%= content_tag_for item, :li do %> > <%= content_tag :hi, item.headline %> > <%= simple_format item.description %> > <%- end -%> > > # assets/javascripts/item_comments.js > $(document).on('turbolinks:load', function(){ > $('#items li').each(function(){ > var elm = $(this); > elm.append('<a href="/comments/new?item_id=' + > elm.attr('id').split('_')[1] + '">Comment</a>'); > }); > }); > > That gets you a link to a CommentsController, which in turn will need to > decode the (bare) attribute item_id out of its querystring, and figure out > which item you are commenting on. > > The #content_tag_for method, which you no doubt read the documentation > for, will always create a unique id on the content tag it creates, using > the instance variable you pass to it to figure out what that should be. For > my contrived example, that will be 'item_123' or 'item_456' or similar. > Model name, singular, lower-case, followed by an underscore, followed by > the ID of the instance. > > It's trivial in JavaScript (using jQuery or not) to read that attribute, > split it by the underscore character, and take the number off the end. So > your JavaScript stays static, uses the DOM as a data source, and you don't > have to write a different link for each of the items in your list. > > 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/c5c586c2-70f7-452c-86af-b2e247482464%40googlegroups.com. > > > > For more options, visit https://groups.google.com/d/optout. > > Thanks Is this what everyone else is doing ?
-- 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/eddc55a6-4f53-4194-9169-3c348d2a425a%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.