0

我正在尝试在 rhodes 上的 ruby​​ 中构建一个动态下拉列表。我的屏幕上基本上有两个下拉列表,我正在使用 ajax 从数据库中获取第二个下拉列表的值,具体取决于第一个下拉列表中选择的值。我是ruby 的新手,不知道如何在 rhodes 上的 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功能(数据)?

4

1 回答 1

1

在 Rhodes 中,控制器动作只能渲染其他动作或返回由部分组成的字符串。因此,为了使用 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 响应。

于 2015-06-03T10:05:29.843 回答