2012-12-20 64 views
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 %> 

我想根据第一所选值来改变第二下拉的内容落下。

为此,我调用第一个下拉列表的change事件的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 

请任何人能帮助我..我怎样才能做到这一点?

+0

有没有什么办法可以在jquery中访问控制器的数组返回值。如果我尝试分配数组中的变量,它将分配给数组的第0个索引 –

回答

1

我必须猜测一下,但我认为这会推动你朝着正确的方向前进。我真的不喜欢这种事情的铁轨选择助手。你可能只是做普通的HTML一个ERB循环中选择

<% 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) 
}); 

的routes.rb

match "https://stackoverflow.com/users/find_val/:id" => "users#find_val", :as => :todo_select 

我猜测你想要的科目选定的用户

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

views/u sers/find_val.js

$(“#result_holder”)。empty()。append(“<%= j(collection_select(”subject“,”id“,@ subjects,”id“,”id“, :prompt =>“ - 选择主题 - ”)%>“)