Getting a remote form to submit within a partial collection when any select changes in Ruby on Rails
Streamline remote form submissions in Ruby on Rails with dynamic select changes using JavaScript callbacks for smoother user interactions.
Duration: 1:29 | Size: 1.7 MB
This one is harder than it seems. But, I figured out a way. The trick and breakthrough came from Teflon Ted.
With a regular form, you could do this in your select statement:
:onChange=>"this.form.submit();"
This won’t work with a remote form, because the submission is not handled with the submit method but rather within the JavaScript callback in onsubmit. So, with a remote form, you have to change it to this:
:onChange=>"this.form.onsubmit();"
So, here is my code.
<%- remote_form_for
:user,
user,
:url=>{:action=>'update_remote', :id=>user.id},
:html=>{:id=>'form_'+user.id.to_s},
:loading=>"Element.show('spinner_"+user.id.to_s+"'); Form.disable('form_"+user.id.to_s+"')"
do |f|
-%>
<%= f.select
:project_id,
Project.find(:all).collect{|p| [p.name,p.id]},
{:include_blank=>false, :selected=>user.project_id},
{:onChange=>"this.form.onsubmit();", :id=>'user_project_id_'+user.id.to_s}
%>
<%- end -%>
>%= image_tag 'spinner_arrows.gif' %< Saving...
Note that this is in a partial that gets iterated over a collection. So, I have to give everything a unique id in the HTML. Also, note that this includes the user of a spinner to show activity is taking place. I also like to disable the form temporarily to make sure nothing else gets selected. I don’t have to hide the spinner or reactivate the form because when the table row gets regenerated via RJS, it goes back to the default condition.
Why customer tools are organized wrong
This article reveals a fundamental flaw in how customer support tools are designed—organizing by interaction type instead of by customer—and explains why this fragmentation wastes time and obscures the full picture you need to help users effectively.
Infrastructure shapes thought
The tools you build determine what kinds of thinking become possible. On infrastructure, friction, and building deliberately for thought rather than just throughput.
Server-side dashboard architecture: Why moving data fetching off the browser changes everything
How choosing server-side rendering solved security, CORS, and credential management problems I didn't know I had.
The work of being available now
A book on AI, judgment, and staying human at work.
The practice of work in progress
Practical essays on how work actually gets done.
The chain was never a chain
On roles, fleets, and the Hegelian reversal waiting at the end of the AI transition. The sequel to Knowledge Work Was Never Work and Apps Are Irrelevant.
I violated my own rule in an hour
This morning I wrote myself a memory file that said never run git add -A without reading git status first. An hour later, I ran git add -A without reading git status first. The rule wasn't the problem.
In the AI era apps are easier to build. And irrelevant.
I spent months building a meal planning app. This weekend I replaced it with two emails, a spreadsheet, and an AI model — and realized the stage I was racing toward wasn't the destination.
Nomethoderror (undefined method `finder’) with engines and Rails 2.2
Fix the NoMethodError with ActionMailer in Rails 2.2 by applying a simple patch. Save time and troubleshoot efficiently with our guide.
Rails + sugarcrm - an alternative approach
Discover a faster, simpler way to connect Rails with SugarCRM by accessing the database directly, avoiding slow API calls for seamless synchronization.
Rails + sugarcrm + soap - get a list of sugar accounts into Rails as an array
Integrate SugarCRM with Rails using SOAP to effortlessly sync company names and streamline your project management workflow.