2011-01-22 92 views
0

我有一个html文本区域,它使用ajax-autocomplete它填充下拉列表,因为我开始输入。当我从下拉菜单中选择一个条目时,它会将某个字段设置为该对象的ID。动态更新rails3中的html页面

一旦我得到了对象的id有没有办法像这样做?

<% @myObjects.find(1) do |myObj| %> 
    <h1><%= myObj.attr1 %><h1> 
    <h2><%= myObj.attr1 %><h2> 
<% end %> 

现在,当我得到我使用jQuery的ATTR()函数来设置暴露我的JavaScript逻辑,我真的不喜欢的值对象的ID。有什么方法可以激活场地吗?或者,隐藏字段和ID填充的位置显示字段,并让ruby用myObjects.find完成它的魔法?

UPDATE:

现在我填充在这样的视场的方式:

$(function() {  
    // Executes a callback detecting changes with a frequency of 1 second 
    $("#id_element_placeholder").observe_field(1, function(){          
    //alert('Change observed! new value: ' + this.value); 
    $.ajax({ 
     type: "GET", 
     dataType: "json", 
     url: "/myobj/get/" + this.value, 
     success: function(data){ 
     $('#last_name').attr('value', data.myobj.last_name); 
     $('#first_name').attr('value', data.myobj.first_name);     
     } 
    }); 
    }); 
}); 

有没有解决暴露的JavaScript代码上面的方法吗?

+0

请提供一些标记和/或尝试解释你正试图从例如用户的视角。我无法弄清楚你的目标是什么。此外 - 用户可以使用Javascript执行的所有操作。没有办法阻止这一点。如果这就是你的意思,“这暴露了我不喜欢的我的JavaScript逻辑”。 – polarblau 2011-01-22 11:48:24

+0

查看更新后的帖子,我已经发布了我现在使用的代码填充html的代码。 – user140736 2011-01-22 17:41:58

回答

4

你的javascript没有错,你似乎在客户端和服务器端技术之间感到困惑。一旦Ruby发送给用户,Ruby就不能直接更新你的页面。它位于您的Web服务器上,您的页面已发送到客户端浏览器。但是,它可以发送JavaScript来响应您的应用程序从客户端浏览器发出的进一步请求,以完成此操作,就像您一样。

您可以发送一个新的HTML片段到您的浏览器并替换整个节点,但实际上没有意义。你在做什么和使用javascript的其他人一样。

0

答案很简单,你不能:) 你在做什么是好的,使用AJAX这样的事情是完成这样的事情的方式。 如果你担心暴露不看javascript,请看服务器端代码允许用户使用get/post方法;