【问题标题】:Using Javascript in Ruby on Rails在 Ruby on Rails 中使用 Javascript
【发布时间】:2013-04-22 21:53:41
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: javascript jquery ruby-on-rails-3 coffeescript


    【解决方案1】:

    在 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 
    

    【讨论】:

    • 感谢您的回答,但我无法正常工作。你能解释一下我应该如何归还电话号码吗?
    猜你喜欢
    • 2018-03-14
    • 2020-10-08
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多