永遠に外国人でいたい

思考ログと技術メモ

Rails::クリックでソートの昇順・降順を切り替え

scaffoldで作られた投稿一覧をクリックでソートできる仕様にしたい。

controllerの設定

orderを(params[:sort])と設定する

  def index
    @posts = Post.all.order(params[:sort])
  end

viewの設定

クリックしたら昇順・降順と切り替わるように設定する

%thead
    %tr
        - def sortTh(a,contName)
            - if request.fullpath.include?('desc')
                - link_to a, sort: contName
            - else
                - link_to a, sort: "#{contName} desc"
        # %th= sortTh('[表示]','[変数名]')
        %th= sortTh('投稿日','postdate')
        %th= sortTh('タイトル','title')
        %th
        %th
%tbody
    %tr
        - @posts.each do |post|
        # %td= post.[変数名]
        %td= post.postdate
        %td= post.title
        %td= link_to '詳細', post
        %td= link_to '編集', edit_post_path(post)

これにて設定完了

ソートの状態を指定してリンクさせたい

= link_to '投稿一覧へ', post_path(sort: '[変数名]')

[変数名]でソートさせるよう、パラメータを作ってくれる。