Ruby on Rhodes使用ajax调用

时间:2013-01-08 05:35:23

标签: ruby rhodes

我正在尝试在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发送到函数(数据)??

1 个答案:

答案 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响应。