【问题标题】:Rails render partial depending on value of collection selectRails 渲染部分取决于集合选择的值
【发布时间】:2013-03-24 07:32:24
【问题描述】:

我正在开发一个基于分类的网站,我想让表单根据 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)

【问题讨论】:

  • 还有什么问题?
  • 詹姆斯,看看这对你有没有帮助stackoverflow.com/questions/14592642/…
  • 嗨@LuísRamalho 我按照教程进行操作,但遇到了一些错误,如更新的问题中所述
  • 能否分享一下出错的文件内容form_partial.js.erb?谢谢
  • 发生错误是因为您将文件 form_partial.js.erb 放在 assets 文件夹中。尝试移动到视图文件夹。

标签: javascript html ruby-on-rails ruby coffeescript


【解决方案1】:

Luís Ramalho 根据评论修复了我的愚蠢

发生错误是因为您将文件 form_partial.js.erb 放在 assets > 文件夹中。尝试移至视图文件夹。 ——路易斯·拉马略

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-31
    • 2015-10-22
    • 1970-01-01
    • 2016-04-24
    • 2014-12-22
    • 2013-03-24
    • 2023-03-13
    • 1970-01-01
    相关资源
    最近更新 更多