在我的rails应用程序中,我通过分页将页面上显示的产品数量限制为6,我希望能够做的是允许用户对结果进行排序/降序排序。我想我需要一个下拉菜单来执行此操作,然后可以通过实例变量将此数据传递给我的products_controller。
在我的application.html.erb视图中,我有一个下拉菜单:
<div id="order-by">
<select>
<option value="asc">Ascending</option>
<option value="des">Descending</option>
</select>
</div>
但是我不确定如何将所选值传递给我的products_controller.rb,并且在我的products_controller.rb中我将其分配给我:
def index
@products = Product.order(:title).page(params[:page]).per(6)
end
有人可以帮忙吗?提前谢谢。
答案 0 :(得分:0)
您可以将排序参数作为GET请求的一部分传递给控制器。控制器需要从请求中提取此参数并应用于排序。
您可以使用带有GET的表单,也可以在发送请求之前使用javascript调整URI。
答案 1 :(得分:0)
快速入侵
<div id="order-by" onchange="sort()">
<select>
<option value="asc">Ascending</option>
<option value="des">Descending</option>
</select>
</div>
<script type="text/javascript">
/*This can be simplified using JQuery etc*/
function sort(){
var selected=document.getElementById('order-by');
var val = selected.options[selected.selectedIndex].value;
window.location = window.location + "?orderBy="+val;
}
</script>
Then in the rails controller, you can access the parameter as :
ortOrder = params[:orderBy]