On Saturday, June 17, 2017 at 11:25:24 AM UTC-4, Walter Lee Davis wrote:
>
>
> > On Jun 17, 2017, at 11:20 AM, fugee ohu <[email protected] <javascript:>> 
> wrote: 
> > 
> > 
> > 
> > On Saturday, June 17, 2017 at 10:12:46 AM UTC-4, Walter Lee Davis wrote: 
> > 
> > > On Jun 16, 2017, at 11:56 PM, fugee ohu <[email protected]> wrote: 
> > > 
> > > 
> > > 
> > > On Thursday, June 15, 2017 at 5:03:37 PM UTC-4, Walter Lee Davis 
> wrote: 
> > > 
> > > > On Jun 15, 2017, at 1:00 AM, fugee ohu <[email protected]> wrote: 
> > > > 
> > > > 
> > > > 
> > > > On Wednesday, June 14, 2017 at 8:49:27 PM UTC-4, Walter Lee Davis 
> wrote: 
> > > > There's nothing dated about it. Using RJS (Remote JavaScript) 
> rendering gives you the ability to render just the parts of the page you 
> want to replace. With jQuery, you would still have to render the custom 
> HTML that you want to inject into the page, but then you would use load() 
> or replaceWith() to substitute it into the DOM. Now you have two problems. 
> > > > 
> > > > Walter 
> > > > 
> > > > > On Jun 14, 2017, at 7:54 PM, fugee ohu <[email protected]> wrote: 
> > > > > 
> > > > > I wanna render to an element instead of redirecting so went back 
> to my book Agile Web Development with Rails adding ajax it says to make my 
> link remote: true and put a respond_to js in my controller and then use a 
> js.erb file Is that a little dated I've been doing some jquery by including 
> *.js files in assets/javascripts Can I render my views to the element using 
> jquery instead of js.erb I notice rails doesn't generate any js.erb files 
> by default Should I do as the book says or find a way to do it with jquery? 
> thanks ia 
> > > > > 
> > > > > -- 
> > > > > 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 [email protected]. 
> > > > > To post to this group, send email to [email protected]. 
>
> > > > > To view this discussion on the web visit 
> https://groups.google.com/d/msgid/rubyonrails-talk/2a6923a4-e128-4b1f-be14-6eed119e66df%40googlegroups.com.
>  
>
> > > > > For more options, visit https://groups.google.com/d/optout. 
> > > > 
> > > > 
> > > > As I iterate through posts I don't know which post someone's going 
> to comment but my js.erb file can only render to a class or id name so when 
> i click comment forms are gonna load for all posts on the page What's the 
> solution please? 
> > > 
> > > The way I usually do this is I have a partial for a list or table that 
> renders just one of the items, which I gather up in the controller, then I 
> use the content_tag_for() helper (removed from Rails 5, but available in a 
> gem). So my list of items would look like this: 
> > > 
> > > <ul id="items"> 
> > > <%= render @items %> 
> > > </ul> 
> > > 
> > > And to get that little bit to work, you just need to have a partial 
> here: app/views/items/_item.html.erb with the following contents: 
> > > 
> > > <%= content_tag_for item, :li do %> 
> > >   <h1><%= item.title %></h1> 
> > >   <%= simple_format item.description %> 
> > > <%- end -%> 
> > > 
> > > In this technique, remember that the local variable (item) inside the 
> partial is named for whatever the partial is named. If you decide to change 
> the name of the partial to item_listing, then inside that partial, your 
> local variable would be item_listing. When you follow the pattern of naming 
> it for the singular of the collection of items you want to render, and you 
> name your collection for the plural, then you can use that lovely terse 
> render @[name of the collection]. But the long form is actually 
> render(partial: 'item', collection: @items), so when you decide to rename 
> the collection or the partial, that's the long-form you need to use in 
> order to clarify what you mean to Rails. 
> > > 
> > > 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 [email protected]. 
> > > > To post to this group, send email to [email protected]. 
> > > > To view this discussion on the web visit 
> https://groups.google.com/d/msgid/rubyonrails-talk/84d6c62f-aa8f-429b-b774-29ccacdd3581%40googlegroups.com.
>  
>
> > > > For more options, visit https://groups.google.com/d/optout. 
> > > 
> > > 
> > > Your example is with a js file in assets Can we do this with a js.erb 
> in views instead? Same code? What about the file naming convention please 
> Thanks 
> > 
> > 
> > Actually, it occurred to me after I wrote this that you could do it 
> without any JavaScript at all. In fact, that's what I usually tell people 
> to do first, so I'm surprised I led with the JS example. The thing is, you 
> build the JS version second, as a layer over the HTML version. That way you 
> have a fallback. 
> > 
> > In the _item.html.erb partial, you would change the template to include 
> the link helper directly: 
> > 
> > <%= content_tag_for item, :li do %> 
> >   <h1><%= item.title %></h1> 
> >   <%= simple_format item.description %> 
> >   <%= link_to 'Comment', new_comment_path(item_id: item.id) %> 
> > <%- end -%> 
> > 
> > Now that link doesn't have to be "magic'd" into the page with JS at all. 
> It is there and it works. Try it out, see how it works. Then layer JS on 
> top of it (if you want to put the comment form into a modal dialog, for 
> example). 
> > 
> > Also, rather than continuing with your current project, I suggest you 
> build a "stunt app" just to work out this linking issue. Just cd up a few 
> levels in your drive, and `rails new stunt-app` and `rails scaffold Item 
> name description:text` and `rails scaffold Comment item:references 
> comment:text` That's enough to work with here, and by using scaffold, you 
> will start with a known-working framework without any assumptions. If 
> you're using Rails 5, don't forget to add the optional: true bit to your 
> belongs_to declaration on Comment. Otherwise you will find that you cannot 
> save an Item without comments. 
> > 
> > Now to the naming conventions. 
> > 
> > If you use the <%= render @items %> trick, then you have to have a file 
> named views/items/_item.html.erb. Inside that partial, the local variable 
> item will be loaded by the Rails framework if you have passed a collection 
> named @items in your render call. All of that is the optimized "magic" way 
> of doing this. It is a shortcut, and it can be expanded to: 
> > 
> > <%= render partial: 'items/item', collection: @items %> 
> > 
> > If you name the partial something other than the singular of the 
> collection, then you have to use the long form. If your partial is in a 
> different object's view hierarchy than the one that is rendering it, then 
> you also need to put that part in the partial name (how I used items/item 
> above). 
> > 
> > So the same thing could be rendered as: 
> > 
> > <%= render partial: 'foos/foo', collection: @items %> 
> > 
> > and the partial would be changed to name the instance variable inside it 
> 'foo'. 
> > 
> > If you really get into the weeds, then you need to have an iterator in 
> the parent page, and really spell it out for Rails: 
> > 
> > <%- @items.each do |item| -%> 
> >   <%= render partial: 'items/item', locals: { item: item } %> 
> > <%- end -%> 
> > 
> > The shortcuts are there to make your production work faster, and if you 
> follow the conventions, then they just work in a way that may confuse you 
> at first. I certainly was confused the first time I did this, particularly 
> when I tried to use a non-conventional setup. It took me a long time for 
> the penny to drop that the name of the instance variable inside the partial 
> was NOT based on the name of the object being rendered, but rather the 
> partial's filename. 
> > 
> > Walter 
> > 
> > 
> > What about the js to render the comment form into the div of the right 
> post id? 
>
> Walk first, then run. This code will link to a form, which will load in 
> another page view. Once you have that working, and it can submit, and it 
> can save a comment, then optimize the flow by injecting the form into the 
> page. You will modify the working code, by adding remote: true to the link 
> to the new comment form, and you will add a new.js.erb file to the comments 
> directory, which will inject the form into the parent page. But you cannot 
> do that step before you get the normal new page view form of this working 
> entirely. 
>
> 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 [email protected] <javascript:>. 
> > To post to this group, send email to [email protected] 
> <javascript:>. 
> > To view this discussion on the web visit 
> https://groups.google.com/d/msgid/rubyonrails-talk/21f1179b-0caa-40f3-971c-f66d119c9e82%40googlegroups.com.
>  
>
> > For more options, visit https://groups.google.com/d/optout. 
>
>
I previously had it working and when you clicked a comment link a new page 
with a form would load

-- 
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 [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/d4264c9b-c7b8-4aa2-9706-3aa8c7ed4b6a%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to