select_tag使用Rails3 + Jquery进行Ajax更新

时间:2010-11-28 19:45:00

标签: jquery ruby-on-rails-3 unobtrusive-javascript

我有一个显示产品类别类型的select_tag。当用户选择产品类别并列出select标签下方div中的所有产品时,我想进行Ajax更新。

我想我能用部分和js模板处理产品展示部分。但我不知道如何实施

产品类别选择 对rails控制器执行ajax请求(带参数)。 (Web中的几乎所有示例都与ajax表单更新绑定....)

有人可以帮助我 - 提前谢谢

我正在使用rails 3,Jquery

欢呼声

sameera

1 个答案:

答案 0 :(得分:4)

如果您向我们提供有关您的数据模型的更多信息,将会很有帮助。我会根据你的问题勾勒出我认为你的想法。

class Product < ActiveRecord::Base
  belongs_to :category
end

class Category < ActiveRecord::Base
  has_many :products
end

并假设您已设置路线:

resources :categories do
  resources :products
end

您需要做的是汇总change的{​​{1}}事件,以根据所选的类别ID请求产品列表。

select_tag

我编写了一个jQuery plugin来简化与Rails控制器的基本RESTful交互,因此它可以写成:

$('select#categories').change(function(){
  var category_id = $(this).find('option:selected').val();
  $.getJSON(
    '/categories/' + category_id + '/products',
    function(response) {
      // render your template on the page here
    }
  );
});

虽然$('select#categories').change(function(){ var category_id = $(this).find('option:selected').val(); $.read( '/categories/{category_id}/products', { category_id: category_id }, function (response) { // render your template } ); }); 并不比$.read简单得多,但其他操作可以为您节省大量的内容。

其余的实现都在控制器中,但是你在如何实现它方面有更多的余地,所以如果没有更多信息,我无法猜测对你有什么帮助。