2

私はhtml.erbファイルに次のフォームを持っています

users.html.erb

 <% form_tag (:action =>:abc_action)do%>
                            <%= label_tag(:user,"Select User") %><br/>
                             <%=collection_select("user",id",@result,"uid","uid",:prompt=>"--Select User--")%><br/>
    <%= collection_select("subject", "id",@res,"id", "id",:prompt=>"--Select Subject--")%><br/>

   <%= submit_tag 'Submit',:id => 'btn'%>
                    <%end %>

最初のドロップダウンで選択した値に応じて、2 番目のドロップダウンの内容を変更したいと考えています。

このために、最初のドロップダウンの変更イベントで jQuery メソッドを呼び出しています。コントローラーは正常に動作しており、コントローラーから返された値は配列型です。

私のjQueryコードは....

jQuery(document).ready(function() {
jQuery("#edetail_id").change(function() {
    jQuery.get('/requests/find_val/?emid=' + jQuery("#user_id").val(),function(data)
   {

          jQuery("#subject_id").html(data);
   }); 
 });
});

私のコントローラーはUsers_controller.rbです

 def find_val
 @acc = user.find(:all, :conditions => ["uid = ?", params[:emid] ])
     @res = Array.new
                            for result in @acc
                                    @res << result.ndid
                            end

          render :text => @res

 end

誰でも私を助けてください..どうすればこれを行うことができますか?

4

1 に答える 1

1

少し推測する必要がありますが、これで正しい方向に進むことができると思います。私は、この種のレール選択ヘルパーが本当に好きではありません。erbループ内で通常のhtml選択を行うだけかもしれません

<% form_tag (:action =>:abc_action)do%>
     <%= label_tag(:user,"Select User") %><br/>
     <%=collection_select("user","id", @result,"uid","uid",:prompt=>"--Select User--")%>
     <div id="result_holder">
      <%= collection_select("subject", "id",@res,"id", "id",:prompt=>"--Select",    
     :html=> {:id => "result"})%>
     </div>
    <br/>
     <%= submit_tag 'Submit',:id => 'btn'%>
   <%end %>

jQuery

jQuery(document).ready(function(){
jQuery("#edetail_id").change(function() {
    var id =  jQuery("#user_id").val()
    jQuery.get('/requests/find_val/' + id)
});

ルート.rb

match "/users/find_val/:id" => "users#find_val", :as => :todo_select

選択したユーザーに件名が必要だと推測しています

def find_val
 @subjects = User.find(params[:id]).subjects
end

ビュー/ユーザー/find_val.js

$("#result_holder").empty().append("<%=j( collection_select("subject", "id",@subjects,"id", "id",:prompt=>")--件名を選択--")%>")

于 2012-12-20T14:50:29.457 に答える