Ruby on Rhodes使用Ajax调用 [英] Ruby on Rhodes using ajax call

查看:83
本文介绍了Ruby on Rhodes使用Ajax调用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试在Rhodes上构建一个Ruby的动态下拉列表.我的屏幕上基本上有两个下拉列表,并且我正在使用ajax从数据库中获取第二个下拉列表的值,具体取决于第一个下拉列表中选择的值. .我是ruby的新手,不知道如何在Rhodes的ruby中使用ajax的语法.

I am trying to build a dynamic dropdown in ruby on rhodes.There are basically two dropdowns on my screen and i am using ajax to get the values of the second dropdown from the database depending on the value selected in the first dropdown..I am a newbie to ruby and do not know the syntax on how to use ajax in ruby on rhodes..

我正在使用的JavaScript代码...

JavaScript Code I am using...

$.post("/app/Settings/dropdown", 
 { value:a }, 
 function(data){ 
alert(data);

});

-----部分控制器代码

-----Partial Controller Code

在此处输入代码

def dropdown

 @a = @params['value']
  puts @a
 if @a.eql?"Auto"
   mystring="auto1|auto2|"
  else
   mystring="personal1|personal2|"
  end
end

我可以通过ajax调用将任何参数发送给控制器.我的问题是如何将数据从控制器发送回该ajax调用中的函数,以便我可以使用该信息来创建动态下拉列表.将此mystring发送到function(data)??

I can get any parameter sent via ajax call to controller..My Question is how to send back the data from controller to function in that ajax call so that i can use that information to create a dynamic dropdown..I want to send this mystring to function(data)??

推荐答案

在Rhodes中,控制器动作只能呈现其他动作或返回由partials组成的字符串.因此,为了使用AJAX填充下拉列表,您必须呈现与操作相关联的视图,该操作将作为对AJAX调用的响应而返回.

In Rhodes, controller actions can only render other actions or return a string consisting of partials. So, in order to populate a dropdown using AJAX, you'll have to render the view associated with the action which will returned as response to the AJAX call.

控制器的下拉"操作:-

Controller 'dropdown' action:-

def dropdown
    @a = @params['value']
    if @a.eql?"Auto"
        @optionList[:auto1]="auto1"
        @optionList[:auto2]="auto2"
    else
        @optionList[:personal1]="personal1"
        @optionList[:personal2]="personal2"
    end
    render :action => "dropdown"
end

"dropdown.erb"视图:-

'dropdown.erb' view:-

<% optionList.each do |key, value| %>
    <option value="<%= key %>"><%= value %></option>
<% end %>

AJAX呼叫:-

$.post(
    "/app/Settings/dropdown", 
    { value:a },
    function(data){
        data = data.replace("<div>","");
        data = data.replace("</div>","");
        alert(data);
    }
});

请确保在AJAX响应中替换 div 标签,因为Rhodes会自动用 div 标签包围AJAX响应.

Make sure you replace the div tags in the AJAX response, since Rhodes automatically surrounds AJAX responses with div tags.

这篇关于Ruby on Rhodes使用Ajax调用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆