Forum: Ruby on Rails AJAX form with multiple interaction points

Announcement (2017-05-07): is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see and for other Rails- und Ruby-related community platforms.
74ba9c207c0b60aa996fbc7db1c28cf9?d=identicon&s=25 Carmine Moleti (carminem)
on 2007-03-04 23:10
Hi to all,

sorry for the poor subject but, as of now, I can't find anything better
to explain the problem.

What I would like to accomplish is:

1. Show the user a form asking for a badge number
2. After entering the number, a new form has to be shown to the user
asking for other data
  2.1 This new form must give the option to add a client to the selected
        Upon adding the client to the badge, no more clients can be
added and the
        user can just fill in the other required fields.

Problem is:
The form at point 2, has a model bound to it (Traccia). This model has
some validations on
field presence.
One of the requirements is that it must have a client attached. Thus, I
cannot save the Traccia's
instance to the database until every validations is satisfied.

The action (ingresso_uscita) which gets called has the following code:

  def ingresso_uscita
    @trace = params[:traccia].blank? ? nil :[:traccia])
    if request.xhr?
      if !params[:badge].blank?
        @trace = Trace.find_by_badge(params[:badge])
        if @trace.nil?
          @trace =
          @trace.inizio =
          @trace.badge = params[:badge]
          @clienti = Client.find_by_sql('select * from clients where id
not in (select client_id from traces where fine is null)')
        @trace.client_id = params[:id]
        @trace.nr_abbinati = 1
      render :update do |page|
        page.visual_effect :highlight, 'ingresso_uscita_form'
        page.replace_html 'ingresso_uscita_form', :partial =>

The first time it gets called, it shows the form described at point 1.
When the user enters the badge number, the action gets called another
This time, request.xhr? evaluates to true, and an instance variable
(@trace) is created.
When the user clicks on the link to add a client to the Trace instance
via the following link:

<%= link_to_remote("Titolare", :url => { :controller => "main", :action
=> "ingresso_uscita", :id => }) %>

A silent exception is raised which complains about @trace being nil.
I have tried passing @trace as a parameter with the above mentioned
link, and it still failed miserably.
The only parameter which gets passed to the action is params[:id].

Advices are welcome.

Thanks in advance for your help.
This topic is locked and can not be replied to.