У меня проблемы с получением вызова UJS для обновления отображения страницы. Я хочу обновить значение div при изменении поля выбора (я гуглил везде, но безрезультатно).
Я настраиваю функцию изменения следующим образом (я использую Haml):
%script
$("#timesheet_worker_id").change(function() {
-# This works, so we know we're responding to the change event:
-# alert('Fired the change function');
$.ajax({url: "/timesheet_show_worker_name",
async: false,
data: 'selected=' + this.value,
dataType: 'script'})
});
});
Мой контроллер имеет следующее:
def show_worker_name
calculated = 'Adam Bilbo'
render(:update) {|page|
### The following works just fine!
#page << "alert('This is a test')"
### This doesn't; DOM is updated but not displayed; test data for now
page << "$('#timesheet_worker_name').val('Adam Bilbo')"
}
end
Мое представление имеет (я использую simple_form):
=f.association :worker, :collection => Worker.all(:order => 'worker_number'), :prompt => 'Select a worker', :label_method => :worker_number, :label => "Worker Number", :input_html => {:class => 'startField'}
%p{:id => :timesheet_worker_name}
Когда вызов ajax завершается, я проверяю DOM, и значение там; то есть в
консоль:
$('#timesheet_worker_id").val()
отображает «Адам Бильбо», но значение не отображается на моей странице.
Я использую Rails 3.0.9 и gem jquery-rails 1.0.9; любая помощь в выяснении того, что я пропускаю, очень ценится! Спасибо.
РАЗРЕШЕНО - работает решение @iWasRobbed ниже. Однако основная проблема заключалась в использовании val () вместо text () при обновлении «#timesheet_worker_name», и поэтому мой оригинальный подход также работает с этим изменением.