我正在尝试使用rails开发一个Web应用程序,它包含课程类别和位置模块。课程与类别和位置与'has_many'的关系。
在我的课程表格中,我需要根据类别整理课程。任何人都可以帮我解决这个问题吗?
course.html.erb:
<%= select_tag(:category_id, options_for_select(Category.pluck(:name, :id)), class: "form-control custom-select" )%>
答案 0 :(得分:0)
您可以使用options_from_collection_for_select方法来避免使用pluck
。如果我没有弄错,你想按名字对类别进行排序。所以:
<%= select_tag :category_id,
options_from_collection_for_select(Category.order(:name), :id, :name),
class: "form-control custom-select" %>
<强>更新强>
所以看起来你需要在下拉列表更改时发送AJAX请求并重新填充表格内容。请查看这些文章:
我们不知道您使用什么来生成表格(简单部分,DataTable-plugin或其他内容),因此我们无法向您建议针对您的案例的最佳解决方案。但是,例如,您可以将更新的表内容作为AJAX响应获取,并以HTML格式重新填充表格。
答案 1 :(得分:0)
如果我理解正确,您希望将您获得的课程列表排序为搜索结果。
所以,试试这个:
@courses = Course.joins(:categories, :locations).where("categories.id LIKE ? and locations.id LIKE ?", "%#{params[:category_id]}%", "%#{params[:location_id]}%").order("categories.name ASC")
答案 2 :(得分:0)
通过添加以下代码解决: course_controller.rb
def index
@courses = @courses.where(category_id: params[:category_id]) if params[:category_id].present?
end
课程index.html.erb
<%= form_tag courses_path, :method => 'get' do %>
<%= select_tag(:category_id, options_for_select(Category.order(:name).pluck(:name, :id) ,:selected =>params[:option]), onchange: 'this.form.submit();', class: "form-control custom-select" , include_blank: true )%>
<% end %>