Hi
I am also struck at the same point please help me ... same problem u r
facing
sandeep
On Aug 11, 6:50 am, Mark Thomas <[email protected]> wrote:
> Hello -
>
> I am fairly new to Ruby on Rails, but feel like I am learning quick.
> I have what seems to be a fairly unique issue as I cannot find much
> out there that describes what I'm seeing.  Hopefully it's a very
> simple fix, and I simply can't see the forest through all the trees!
>
> I am attempting to create 2 related drop-down lists in the same
> form_for, both using collection_select.
> On the first drop-down, I have an onChange "remote_function" call that
> I want to send an AJAX call to the controller and filter the list in
> the 2nd drop-down based on what was selected in the first.  In the
> controller method, I then call page.replace_html to render a partial.
> In the partial is the "updated/filtered" 2nd collection_select drop-
> down list.
>
> The remote_function works fine and calls the Controller method when
> the first drop-down changes. I am also able to pass the selected value
> to the method and filter the records returned.  The problem occurs
> when the controller attempts to render the partial, I get the
> following error:
>
> ActionView::TemplateError (undefined local variable or method `f' for
> #<ActionView::Base:0xb6e7b2f4>) on line #1 of app/views/listings/
> _automodels.html.erb:
> <%= f.collection_select :model, @automodels, :model, :model, {:prompt
> => "-Select a Make First-"} %>
>
> This leads me to believe that the "f" variable the rest of the fields
> in the form_for are using is not available to the newly-replaced
> "collection_select", but I'm not sure why?
>
> If the partial contains a simple HTML <input> instead of the
> collection_select, the replace_html works fine.
>
> Source code is worth 1,000 words, so here it is:
>
> listings/new.html.erb
>
>    1. <% form_for([...@user, @listing]) do |f| %>
>    2.   <%= f.error_messages %>
>    3.   <p>
>    4.     <%= f.label :make %><br />
>    5.     <%= f.collection_select :make, @automakes, :make, :make,
> {:prompt => "-Select a Make-"}, {:onChange => remote_function(:url =>
> {:action => 'get_automodels'}, :with => "'make=' + this.value")} %>
>    6.   </p>
>    7.   <p>
>    8.     <%= f.label "Model:" %><br/>
>    9.     <div id='automodelsdiv'>
>   10.       <%= f.collection_select :model,
> @automodels, :model, :model, {:prompt => "-Select a Make First-"} %>
>   11.     </div>
>   12.   </p>
>   13.   <p>
>   14.     <%= f.submit 'Create' %>
>   15.   </p>
>   16. <% end %>
>
> listings_controller.rb
>
>    1. def get_automodels
>    2.   @automodels = Automodels.find_by_make(params[:make])
>    3.   render :update do |page|
>    4.     page.replace_html('automodelsdiv', :partial => 'automodels')
>    5.   end
>    6. end
>
> _automodels.html.erb
>
>    1. <%= f.collection_select :model, @automodels, :model, :model,
> {:prompt => "-Select a Make First-"} %>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to