我正在开发基于分类广告的网站,我想让表单适应javascript输入的分类类型。
例如,我有很多类型,即。汽车与汽车手机
我有三个下拉菜单,根据之前的输入使用咖啡脚本进行过滤(代码将包含在下面)。
我希望表单根据最后一个框中的选定值加载部分。
看一下下面的例子。
第一个下拉列表是类别,然后是子类别,然后是子子类别。
我想在选中最后一个“游戏”框时加载部分“_games.html.erb”
我用于隐藏和过滤下拉菜单的咖啡脚本如下
jQuery ->
$('#classified_tag_list').autocomplete
source: $('#classified_tag_list').data('autocomplete-source')
$('#classified_sub_category_id').hide()
$('#classified_sub_sub_category_id').hide()
sub_category = $('#classified_sub_category_id').html()
$('#classified_category_id').change ->
category = $('#classified_category_id :selected').text()
options = $(sub_category).filter("optgroup[label='#{category}']").html()
if (options)
$('#classified_sub_category_id').html(options)
$('#classified_sub_category_id').show()
$('#classified_sub_sub_category_id').empty()
else
if(not category == 'Please select a category')
$('#classified_sub_category_id').parent().hide()
$('#classified_sub_sub_category_id').parent().hide()
$('#classified_sub_category_id').empty()
$('#classified_sub_category_id').empty()
$('#classified_sub_sub_category_id').empty()
$('#classified_sub_sub_category_id').empty()
suburbs = $('#classified_sub_sub_category_id').html()
$('#classified_sub_category_id').change ->
city = $('#classified_sub_category_id :selected').text()
options = $(suburbs).filter("optgroup[label='#{city}']").html()
if (options)
$('#classified_sub_sub_category_id').html(options)
$('#classified_sub_sub_category_id').show()
else
$('#classified_sub_sub_category_id').empty()
$('#classified_sub_sub_category_id').hide()
那么如何使用javascript加载部分取决于最后一个下拉列表的值?
[编辑]
我看了Dynamic Partial Based on Select Box - Rails 2.3.5
这就是我所拥有的
_form.html.erb
<script type="text/javascript">
$(document).ready(function() {
$('#classified_sub_sub_category_id').change(function() {
$.ajax({ url: '/classifieds/form_partial/'+ this.value });
});
});
</script>
routes.rb
resources :classifieds do
match "/form_partial/:id" => "classifieds#form_partial"
end
classifieds_controller.rb
def form_partial
@category = Category.find(params[:id])
end
form_partial.js.erb
<% if @category == 1 %>
$('#classified_sub_sub_category_id').after('<div id="product_partial"><%= escape_javascript render('/forms/cars') %></div>');
<% else %>
$('#classified_sub_sub_category_id').after('<div id="product_partial"><%= escape_javascript render('/forms/cars') %></div>');
<% end %>
但这会产生错误
undefined method `render' for #<#<Class:0xa0805fc>:0xb574788>
(in /home/james/hustle/app/assets/javascripts/form_partial.js.erb)
答案 0 :(得分:1)
愚蠢的我由LuísRamalho根据评论确定
发生错误是因为您将文件form_partial.js.erb放在assets&gt;文件夹中。请尝试移动到views文件夹。 - LuísRamalho