0

我有一个下拉列表,您可以在其中选择一个人。

<%= select_tag "person", options_from_collection_for_select(Person.all, :id, :name, 1) %>

当一个人被选中时,我想显示那个人的电话号码。我怎样才能做到这一点?

在查看了很多关于如何在 RoR 中使用 Javascript/jQuery/CoffeeScript 的解决方案之后,我对在哪些文件中放置什么以及使用什么感到有点困惑。有人可以给我一个简单的例子吗?

4

1 回答 1

0

在 onchange 事件中将您更改的人员 ID 传递给 javascript 函数。


<%= select_tag "person", options_from_collection_for_select(Person.all, :id, :name, 1) ,
 :onchange => "your_js_function_to_display_phone_for(this.value)"%>

触发 Ajax 请求并从数据库中返回电话号码。(如果人员列表很小,您也可以从客户端执行此操作)


<script type="text/javascript">

function your_js_function_to_display_phone_for(person_id)
{

// Given a person_id 
// I am assuming this route will return me the Phone Number 

new Ajax.Request('/person/get_phone_number/'+person_id,
{asynchronous:true, evalScripts:true,
method:'post', 
onSuccess:function(request)
{
    // Modify this place to whether update on particular div_id 
    // or do appropriate action with returned request.body 

    alert("Phone Number for this Person is: "+request.body);
}, 
parameters:Form.serialize(this)});
}

</script>

编辑:

你的控制器应该做这样的事情。

class PersonController
    def get_phone_number
        person = Person.find(params[:id])
        phone_number = person.get_phone_number 
        render :text => phone_number 
    end 
end 
于 2013-04-19T12:14:15.797 回答