我正在开发一个rails应用程序(版本:2.3.8)ruby版本1.8.7,我有一个表,列出了特定类的所有记录 例子
<h2> purifications in last <%= text_field_tag "number", @n %> days </h2>
<div class="purifications">
<table>
<%@purifications.each do |r|%>
<tr>
<td><%= @purification.name %></td>
</tr>
<%end%>
</table>
</div>
def purifications
@n = 30
@purifications = Purification.find(:all, :conditions => ["end_date > ?", @person.id, @n.days.ago.to_s(:db)])
end
我想要一种方法来使用Jquery或javascript和ajax使用远程方法更新它。 有人可以帮我解决这个问题吗?
我尝试过使用
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script>
$j = jQuery.noConflict(true);
$j(document).ready(function(){
$j("number").change(function update_table(){
$j.post("/protein_purification/remote_test",
{
number_for_update: $('this').value,
});
});
});
</script>
def remote_test
raise params.inspect
end
我根本无法传递任何参数, 控制台也没有给出任何错误。 我无法弄清楚它是如何工作的,因为我是ajax的新手。 有没有更容易的方法去做,我正在使用rails 2.3.8 任何人?谢谢
答案 0 :(得分:1)
您的选择器出现问题:
$j(document).ready(function(){
$j("number").change(function update_table(){
# ^ Here, it is trying to find a HTML element <number></number>
您应该使用此选择器:
$j(document).ready(function(){
$j("#number").change(function update_table(){
# ^ this will try to find any html element matching id 'number'
另外,我不确定,但我认为你不能在这样的回调中定义一个函数,试试这个:
$j(document).ready(function(){
$j("#number").change(function () {
$j.post("/protein_purification/remote_test",
{
number_for_update: $('this').value,
});
});
});
或同等的:
$j(document).ready(function(){
$j("#number").change( update_table($(this).val()) );
});
window.update_table = function (value) {
$j.post("/protein_purification/remote_test",
{ number_for_update: value });
});
# this function is clearly unfinished
}