我正在尝试在rhodes上构建Ruby中的动态下拉列表。我的屏幕上基本上有两个下拉列表,我使用ajax从数据库中获取第二个下拉列表的值,具体取决于在第一个下拉列表中选择的值。我是ruby的新手,不知道如何在罗兹上的红宝石中使用ajax的语法..
我正在使用的JavaScript代码......
$.post("/app/Settings/dropdown",
{ value:a },
function(data){
alert(data);
});
-----部分控制器代码
在这里输入代码
def dropdown
@a = @params['value']
puts @a
if @a.eql?"Auto"
mystring="auto1|auto2|"
else
mystring="personal1|personal2|"
end
end
我可以通过ajax调用将任何参数发送到控制器。我的问题是如何从控制器发回数据,以便在该ajax调用中运行,以便我可以使用该信息创建动态下拉列表。我想要将此mystring发送到函数(数据)??
答案 0 :(得分:1)
在Rhodes中,控制器操作只能呈现其他操作或返回由partial组成的字符串。因此,为了使用AJAX填充下拉列表,您必须呈现与将作为对AJAX调用的响应而返回的操作相关联的视图。
控制器'下拉'动作: -
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'视图: -
<% 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响应。