使用排序重构Ruby on Rails link_to

Noo*_*ion 3 ruby sql ruby-on-rails link-to

我对Rails,数据库和Web开发都很陌生,现在我的功能正在运行,但我100%确定它不是最干净或最Ruby-esq的方式.基本上我想使用两个单独的链接,按不同的列对同一个表进行排序,而不使用两个控制器操作和两个视图.我宁愿只使用一个索引操作来获取一个参数,该参数指示如何对返回的数据进行排序.

电流控制器:

Controller

def index
  @casinos = Casino.order('name ASC')
end

def casinos_by_region
  @casinos = Casino.order('location ASC')
end
Run Code Online (Sandbox Code Playgroud)

和视图中的链接

 %h3 Sort by:
 = link_to 'Name', casinos_path
 %br
 = link_to 'Location', casinos_by_region_path
Run Code Online (Sandbox Code Playgroud)

我阅读了文档,但是我没有看到使用link_to路径将参数从视图传递给控制器​​的明显方法?我知道我可以通过其他方式做到这一点,但我拒绝相信我不能这样做.抱歉这个愚蠢的问题!

And*_*dyV 5

大拇指到CDub.只是为了增强它,您可能希望通过确保params [:sort_param]包含预期值来为排序添加一点安全性,以防有人决定键入url.下面的代码不仅可以确保您获得可接受的排序键,还可以为首次访问URL提供默认值.

def index
  params[:sort_param] = %w{name location}.include?(params[:sort_param]) ? params[:sort_param] : 'name'
  @casinos = Casino.order "#{params[:sort_param]} ASC"
end
Run Code Online (Sandbox Code Playgroud)