Let me try again on a new Rails app and confirm that I am right.… if what YOU say is correct then I missed something when debugging and it is my bad. Will revert on this
On Tuesday, February 18, 2020 at 1:41:02 PM UTC-5, Ariel Juodziukynas wrote: > > I understand your complain, what I'm saying is that I have some rails 6 > projects using form_for remote and form_with and I didn't have to bind to > the ajax events. rails-ujs and jquery_ujs both expect you to render a view > with .js format and both libraries executes your response's javascript. > > Are you rendering a js view when you process the unsubscribe action? what > does you action do? what do you respond to the user from your server? you > have to tell rails what to do when you submit the form, how are you telling > rails what to do? > > El mar., 18 feb. 2020 a las 14:46, Momeas Interactive (< > te...@datatravels.com <javascript:>>) escribió: > >> >> Yes, I was discussing this in the Slack channel yesterday in the #coding >> room >> >> You're right that Rails no longer installs JQUery by default, but lots of >> things just go ahead and encourage it anyway. (which Is fine and not what >> I'm complaining about) >> >> >> This guide, for example, as I said above, encourages you to use jQUery to >> add Ajax events to your form submit: >> >> >> https://guides.rubyonrails.org/working_with_javascript_in_rails.html#remote-elements >> >> You could of course not use jQuery and do it another way, except that >> rails-ujs, which is really the problem here, expect you not to. >> >> Right at the top of the https://github.com/rails/jquery-ujs/wiki/ajax docs >> it says that the UJS events are emitted through jQuery. >> >> So I realize that UJS is also at play here, and neither UJS nor jQUery >> are my complaints. >> >> My complaint is that this obscure non-intuitive part of Rails is required >> to do something basic-- like submit a form-- and that Rails 6 has too much >> configuration over convention. >> >> These days when I install Rails 6 all I do is configuration, >> configuration, configuration (and fighting with these obscure parts of >> Rails to configure it some more) >> my code just looks like this: >> >> >> - if @unsubscribe >> = form_with url: '/unsubscribe' do |f| >> = f.hidden_field :email, value: @unsubscribe.email >> = f.hidden_field :nonce, value: @unsubscribe.nonce >> >> You are confirming that you want to unsubscribe: >> %br >> %br >> = f.text_field :email, disabled: true, value: @unsubscribe.email >> %br >> %br >> = f.submit 'Unsubscribe' >> >> >> When I do this, the form is submitted as Javascript (JS). if I add local: >> true then the form is submitted as HTML. >> >> *This is not a bug, it is a complaint. * >> >> the default behavior (to submit using JS) shouldn't leave my app in a >> non-working buggy state (nothing happens unless you bind an event to the >> Ajax event). that's the complaint. >> >> -Jason >> >> >> >> >> >> On Tuesday, February 18, 2020 at 12:27:26 PM UTC-5, Ariel Juodziukynas >> wrote: >>> >>> And also (sorry for the multiple responses), you are showing jquery >>> code, rails moved out of jquery a long time ago (I think docs are outdated >>> though), something might be wrong with your setup. >>> >>> El mar., 18 feb. 2020 a las 14:25, Ariel Juodziukynas (< >>> arie...@gmail.com>) escribió: >>> >>>> Can you share some code to reproduce the problem? (a github repo with a >>>> simple rais app would be greate) >>>> >>>> El mar., 18 feb. 2020 a las 14:24, Ariel Juodziukynas (< >>>> arie...@gmail.com>) escribió: >>>> >>>>> I have a few rails 6 projects and remote forms works out of the box >>>>> with no event binding. Can you reproduce that problem with a clean >>>>> rails app? maybe you have some other js messing up rails' ajax handers. >>>>> >>>>> El mar., 18 feb. 2020 a las 14:22, Momeas Interactive (< >>>>> te...@datatravels.com>) escribió: >>>>> >>>>>> Incorrect. You HAVE to bind your Ajax events, or else there is no >>>>>> functionality. (the page does not refresh and gives no user >>>>>> interaction). I >>>>>> do not think that expecting user interaction is an abnormal expectation >>>>>> in >>>>>> a modern web app. >>>>>> >>>>>> >>>>>> >>>>>> On Sunday, February 16, 2020 at 5:39:20 PM UTC-5, Ariel Juodziukynas >>>>>> wrote: >>>>>>> >>>>>>> It doesn't say you that you HAVE to bind all the ajax events. It >>>>>>> explicitly says that you "probably" want to do that if you "probably" >>>>>>> want >>>>>>> to do something other than just submitting the form. >>>>>>> >>>>>>> El dom., 16 feb. 2020 a las 17:53, Momeas Interactive (< >>>>>>> te...@datatravels.com>) escribió: >>>>>>> >>>>>>>> it says here in the docs that for turobolinks that you now have to >>>>>>>> BIND ALL YOUR AJAX EVENTS (!?!?) if you want your forms to submit >>>>>>>> correctly. >>>>>>>> >>>>>>>> >>>>>>>> https://guides.rubyonrails.org/working_with_javascript_in_rails.html#remote-elements >>>>>>>> >>>>>>>> >>>>>>>> "You probably don't want to just sit there with a filled out >>>>>>>> <form>, though. You probably want to do something upon a successful >>>>>>>> submission. To do that, bind to the ajax:success event. On failure, >>>>>>>> use >>>>>>>> ajax:error. Check it out:" >>>>>>>> >>>>>>>> $(document).ready -> >>>>>>>> $("#new_article").on("ajax:success", (event) -> >>>>>>>> [data, status, xhr] = event.detail >>>>>>>> $("#new_article").append xhr.responseText >>>>>>>> ).on "ajax:error", (event) -> >>>>>>>> $("#new_article").append "<p>ERROR</p>" >>>>>>>> >>>>>>>> >>>>>>>> basically… sitting there with a filled out form is exactly what >>>>>>>> happens if you just do a generic form_with and post it now in Rails 6 >>>>>>>> … >>>>>>>> literally, the user just sits there and nothing happens. >>>>>>>> >>>>>>>> are you really supposed to bind all your turbolinks forms >>>>>>>> throughout your website like this? This seems totally nuts to me, and, >>>>>>>> kind >>>>>>>> of, not at all 'unobtrusive' … (I thought the whole point of >>>>>>>> 'unobtrusive' >>>>>>>> was to not have to write a lot of helper/glue/boiler plate code.) >>>>>>>> >>>>>>>> it seems totally crazy to me that out-of-the-box Rails 6 >>>>>>>> installations can't do the most basic web function of submitting a >>>>>>>> form >>>>>>>> without the developer having to know about binding events of the Ajax >>>>>>>> calls. In the old days didn't this used to 'just work' out of the box? >>>>>>>> >>>>>>>> anyone else have any thoughts on this and think Rails is moving in >>>>>>>> the wrong direction here? The main attraction of Rais is how easy it >>>>>>>> is to >>>>>>>> make so much functionality with little config and effort, and this >>>>>>>> area >>>>>>>> seems too basic to me to require this top-heavy approach that requires >>>>>>>> binding up Ajax events. >>>>>>>> >>>>>>>> I think Rails 7 should move away from having turbolinks turned on >>>>>>>> by default — it's a good technology if you want to opt-in to it, but >>>>>>>> it's >>>>>>>> got so much configuration that it often just gets in the way for new >>>>>>>> Rails >>>>>>>> apps. It would be very easy to simply leave off Turbolinks in default >>>>>>>> Rails >>>>>>>> apps and then simply provide instructions for opting-in to it. (Like, >>>>>>>> active record session store and other things that used to be default >>>>>>>> and >>>>>>>> then were extracted out into separate opt-in gems.) >>>>>>>> >>>>>>>> >>>>>>>> Thoughts? >>>>>>>> >>>>>>>> Jason >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> 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 rubyonra...@googlegroups.com. >>>>>>>> To view this discussion on the web visit >>>>>>>> https://groups.google.com/d/msgid/rubyonrails-talk/511637f0-dec3-4bd1-9648-a823c140669b%40googlegroups.com >>>>>>>> >>>>>>>> <https://groups.google.com/d/msgid/rubyonrails-talk/511637f0-dec3-4bd1-9648-a823c140669b%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>>>>> . >>>>>>>> >>>>>>> -- >>>>>> 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 rubyonra...@googlegroups.com. >>>>>> To view this discussion on the web visit >>>>>> https://groups.google.com/d/msgid/rubyonrails-talk/39ae14f7-72e1-48c3-9d44-371a4e9a799f%40googlegroups.com >>>>>> >>>>>> <https://groups.google.com/d/msgid/rubyonrails-talk/39ae14f7-72e1-48c3-9d44-371a4e9a799f%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>>> . >>>>>> >>>>> -- >> 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 rubyonra...@googlegroups.com <javascript:>. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/rubyonrails-talk/9021a944-10e2-4320-9c2f-b5b68743fb8e%40googlegroups.com >> >> <https://groups.google.com/d/msgid/rubyonrails-talk/9021a944-10e2-4320-9c2f-b5b68743fb8e%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> > -- 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 view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/e8b46fc5-8dea-4185-a282-3f61d80f5cbe%40googlegroups.com.