我在 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 %>
我想根据第一个下拉列表的选定值更改第二个下拉列表的内容。
为此,我在第一个下拉列表的更改事件上调用 jQuery 方法。 Controller 工作正常, Controller 返回值为数组类型。
我的 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);
});
});
});
我的 Controller 是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
请任何人帮助我..我该怎么做?
最佳答案
我必须猜测一下,但我认为这会将您推向正确的方向。我真的不喜欢rails select helpers来处理这类事情。您可能只是在 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
views/users/find_val.js
$("#result_holder").empty().append("<%=j( collection_select("subject", "id",@subjects,"id", "id",:prompt=>"- -选择主题--")%>")
关于jquery - 在 ruby on Rails 中使用 jQuery 绑定(bind)下拉菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13971366/