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.