Geo
Geo

Reputation: 96807

How can I create this dynamic form?

Imagine a dropdown with 3 options:A,B,C and a div with the id of myform. When the user selects an option from the list, the div's content should be replaced by the form corresponding to the option. The thing is, the forms have nothing in common.

I was thinking of tackling this in the following way:

Is there a better way of doing this?

Upvotes: 0

Views: 376

Answers (3)

BurmajaM
BurmajaM

Reputation: 724

Here's guideline how I would do it: When some option is selected, for example A, with AJAX GET AController#new as JSON and return form rendered by erb. Than $('#myForm').html(withResponse). Main idea is that on select.change event you hit correct resource controller new action and replace div content with it's response.

Not complete answer but I hope it will give you an idea

Upvotes: 1

Kyle Macey
Kyle Macey

Reputation: 8154

Use a javascript select to call your AJAX controller with :onchange => remote_function(...)

In your controller =>

def FormCreator
  if params[:form] == 1
    render :update do |page|
      page.replace_html 'form_div', :partial => 'form_1'
      #make a file with just the form called _form_1.erb, this is called a partial 
      #because the file name starts with '_'
      #form_div is the id of the div that holds all 3 forms.
    end
  end
  #repeat for all forms
end

Upvotes: 0

mark
mark

Reputation: 10564

Why not just hide the forms and reveal/hide them upon select list selection? It doesn't matter which controller or action you render the forms/select list from but they should probably post to their own controller and render only the previously posted form on validation failure.

Upvotes: 0

Related Questions