LoginSignup
16

More than 5 years have passed since last update.

Railsでtable内の要素をソートしたい

Last updated at Posted at 2016-02-13

Userオブジェクトをソートしてクラス変数に入れる(2016-02-15修正)

user.rb
・・・
VALID_SORT_COLUMNS = %w(name nickname)
def index
  sort = params[:sort] if VALID_SORT_COLUMNS.include?(params[:sort])
  @users = User.order(sort)
end
・・・

ソートのパラメータとして,nameを渡す

index.html.erb
...
<table>
  <tr>
    <th>
      <%= link_to "Name", sort: "name" %>
    </th>
  </tr>
  <% users.each do |user| %>
  <tr>
    <td>
      <%= user.name %>
    </td>
  </tr>
</table>
...

修正

2016-02-15

SQLインジェクションを考慮したコードに修正 (@jnchito さんよりコメントいただきました)

修正後のuser.rb

user.rb
・・・
VALID_SORT_COLUMNS = %w(name nickname)
def index
  sort = params[:sort] if VALID_SORT_COLUMNS.include?(params[:sort])
  @users = User.order(sort)
end
・・・

修正前のuser.rb

user_old.rb
・・・
def index
  @users = User.order(params[:sort])
end
・・・

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16