0

ruby on rhodes.There で動的ドロップダウンを構築しようとしています。画面には基本的に 2 つのドロップダウンがあり、最初のドロップダウンで選択した値に応じて ajax を使用してデータベースから 2 番目のドロップダウンの値を取得しています。 ruby の初心者であり、ロードス島の 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);
    }
});

Rhodes は自動的に AJAX 応答をdivタグで囲むため、AJAX 応答のdivタグを必ず置き換えてください。

于 2015-06-03T10:05:29.843 に答える