<div class="field">
<%= f.label :section_id %>
<%= f.select :section_id,options_from_collection_for_select(Section.all, :id, :name )%>
</div>
<div class="field">
<%= f.label :sub_section_id %>
<div id="sub_section_div"></div>
</div>
<div class="actions">
<%= f.submit %>
</div>
<script type="text/javascript">
$(document).ready(function(){
$("select#sub_section_section_id").change(function(){
var id_value_string = $(this).val();
**$('#sub_section_div').html('<%= j f.select :name,options_from_collection_for_select(SubSection.where(:section_id=>1), :id, :name )%>');**
});
});
</script>
<% end %>
我在视图页面中有两个下拉列表section
和subSection
。当我选择任何部分时,我想填充其各自的子部分。但问题是我想将id_value_string
传递给where子句中的section_id
。请帮助我。谢谢。
答案 0 :(得分:1)
它不会像这样工作,在页面加载后你无法将JS传递给Ruby。我认为你最好使用AJAX:
$(document).ready(function(){
$("select#sub_section_section_id").change(function(){
var id_value_string = $(this).val();
$.ajax({
url: "<%= sub_sections_path %>",
data: {
section_id: id_value_string
}
});
});
您需要为此创建一个新的控制器/操作,然后在关联的.js视图文件中,您可以执行类似于传递通过AJAX发送的变量的行:
$('#sub_section_div').html('<%= j f.select :name,options_from_collection_for_select(SubSection.where(:section_id=>params[:section_id), :id, :name )%>');