我有具有并属于许多类别的表项目。在主页上,我显示所有项目。每个类别都有一个单击事件,我希望数据库按该类别过滤项目。有人可以帮助我建立一个框架来实现这一点吗?我完全是 AJAX 的初学者,更不用说 jquery/rails 了。
如果该解决方案允许用户单击多个并在提要中显示两个类别的帖子,则可以加分。
提前致谢!
楷模:
class Project < ActiveRecord::Base
attr_accessible :id, :filename, :location, :uploaded_file, :project_id, :category_id
has_and_belongs_to_many :categories
def to_hash
{
:id => self.id,
:filename => self.filename,
:location => self.location,
}
end
end
class Category < ActiveRecord::Base
attr_accessible :name, :id, :category_id, :project_id
has_and_belongs_to_many :projects
def to_hash
{
:id => self.id,
:name => self.name
}
end
end
class Category_Project < ActiveRecord::Base
attr_accessible :project_id, :category_id
belongs_to :project
belongs_to :category
def to_hash
{
:project_id => self.project_id
:category_id => self.category_id
}
end
end
我的 jQuery onclick 函数中的 AJAX 调用。“cat”是已建立的类别名称之一的名称。
...
params = 'category_name=' + cat;
$.ajax({
url: "/projects_controller/filter_list",
data: params
})
我的观点只是做一个@projects.each 做|project| 功能。
projects_controller 中的相关函数:
def filter_list
@projects = Project.includes(:categories).where("categories.name = ?", params[:category_name])
respond_to do |format|
change_color.js /// Is this right?? This is same .js file my onclick event is in.
end
end
但是,当我对其进行测试并单击“食品”类别的选项卡时,什么也没有发生,并且出现 500 内部服务器错误。