AJAX with Rails - 30 May 2012
Adding AJAX to a Rails application is pretty easy. There are a couple of simple steps, such as adding remote: true
to your form, formatting the response in your controller, and adding an AJAX response file.
Here’s an overview of the changes you’ll need to make to your project.
# View = form_for [ @project, Note.new ], remote: true do |f| = f.text_field :content = f.submit
All we need to do with our views, is add the remote: true
option to the form. In this example, I’m showing AJAX with nested resources.
# Controller def create @note = @project.notes.build params[:note] @note.user_id = current_user.id if @note.save respond_to do |format| format.html { redirect_to @project } format.js { render layout: false } end else render :new end end
In the controller we need to add a respond_to block. This will generate the correct response depending on what the client is looking for.
# views/notes/create.js.coffee $('ul.notes').prepend( $("<%=escape_javascript( render 'note', note: @note, project: @project )%>") ) $('.new_note')[0].reset() $('.best_in_place').best_in_place()
Here’s the response that’s going to load when someone creates a new note in our application. As you can see, we’re adding the note partial to our notes list. We then reset the note form, and reload best_in_place to work with the newly rendered note.