I have two questions.
I have a select tag in a rails 3 application that looks like this:
<%= select(@adverse_event_template_settings,
"display_arms",
options_for_select([["Yes", true], ["No", false]]),
{ :selected => :display_arms },
:onchange => remote_function(:update => "display_arms",
:method => "put",
:with => "'display_arms=' + value",
:url => { :controller => :adverse_event_template_settings,
:action => :update, :id => @aets.id})) %>
This does what I want it to do- that is, call a controller action when the select box value changes.
Even though this works, I want to know 1) Is this valid in rails 3? I know it is obtrusive javascript, but remote_function working in rails 3 seems weird to me - is something wrong here?
and if the above is NOT valid, I really really really would like to know 2) how can I accomplish this same action (i.e. call the same action in the same controller) unobtrusively? Is there a way to do this simply and cleanly in rails 3? I desperately need coding help with this part.
Thank you so much! Let me know if you need more details.
(I assume you are using jQuery).
I would put the javascript part in a .js file and manage the onchange event with jQuery.
<%= select(@adverse_event_template_settings,
"display_arms",
options_for_select([["Yes", true], ["No", false]]),
{ :selected => :display_arms }) %>
and in the js file:
$(document).ready(function() {
$('#display_arms').change(function(){
$.ajax({url: 'YOUR URL',
data: 'display_arms=' + value,
success: function(data){
$('#display_arms').html(data);
}
})
});
});
(I haven't had time to test this but you get the idea)
To be honest, I'm not sure there's a way to do this kind of thing unobtrusively (or I'm interested!).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With