1
我无法通过UJS调用来更新页面显示。我想在选择框发生变化时更新div的值(我已经遍布整个地方,但无济于事)。Rails3 UJS更新不显示
我设置的更改功能,像这样(我用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在下面的作品。然而,基本问题是在更新'#timesheet_worker_name'时使用val()而不是text(),因此我的原始方法也适用于此更改。
对不起;与我的原始代码相同。页面上没有显示,但DOM值已设置。 – JESii 2012-01-19 00:16:50
对不起,我甚至没有看'#timesheet_worker_name'是什么......你不能用'val()'设置段落'p'元素。你需要使用:'$('#timesheet_worker_name')。text(json.name);'而不是。我更新了我的答案。再次抱歉! – iwasrobbed 2012-01-19 03:19:02
这样做了;谢谢@iWasRobbed!这也意味着我的原始示例与从val()到text()的相同更改一起工作...我测试了它。 – JESii 2012-01-19 11:17:18