Ruby on Rhodes使用Ajax调用 [英] Ruby on Rhodes using ajax call
问题描述
我正在尝试在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屋!