One solution I can think of is to put the DOM ID into an appropriate
model. In this case, I'd make RentalMap#map_filter_form_dom_id return
"map-filter-form".
However, if I do that, the contents of submit_map_filter_form.js would
need to be placed elsewhere, because RentalMap#map_filter_form_dom_id
can't be called from the Javascript file.
I could do something like this:
Add a class method to the RentalMap model for the DOM ID:
# rental_map.rb
class RentalMap
MAP_FILTER_FORM_DOM_ID = 'map-filter-form'
def self.map_filter_form_dom_id
MAP_FILTER_FORM_DOM_ID
end
end
The form in /neighbourhoods/1/map/ calls the new method:
# map.html.erb
<% form_remote_tag ... :html => {:id =>
RentalMap.map_filter_form_dom_id} do %>
Move the Javascript into a partial so that the new method can be
called:
# _submit_map_filter_form.html.erb
<script type='text/javascript'>
Event.observe(window, 'load', function() {
$('<%=h RentalMap.map_filter_form_dom_id -%>').onsubmit();
});
</script>
The partial above must be rendered:
# map.html.erb
<%= render :partial => 'submit_map_filter_form' %>
But that doesn't feel right, for several reasons:
1) Now there's a partial whose sole purpose is to spit out some
Javascript code (as opposed to HTML code).
2) The form's DOM ID doesn't feel like it belongs in a model in the
first place.
3) As the number of DOM IDs that shouldn't be hard-coded increases,
the models get filled up with these tiny methods.
I'd love to hear any comments and suggestions you guys have. Thanks!
Nick
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---