Setting default value for param attribute in controller if it is zero?

I allow users to sort created_at and total_votes :

posts_controller.rb:

 @posts = current_user.subscribed_posts.paginate(:page => params[:page], :per_page => 5, :order => params[:order_by]) 

show.html.erb:

  <span class="comment-tab <% if params[:order_by] == 'created_at DESC' %>current-tab<% end %>"><%= link_to 'Date (DESC)', post_path(@post, :order_by => "created_at DESC") %></span> <span class="comment-tab <% if params[:order_by] == 'created_at ASC' %>current-tab<% end %>" ><%= link_to 'Date (ASC)', post_path(@post, :order_by => "created_at ASC") %></span> <span class="comment-tab <% if params[:order_by] == 'total_votes DESC' or params[:order_by].nil? %>current-tab<% end %>"><%= link_to 'Votes', post_path(@post, :order_by => "total_votes DESC") %></span> 

I would like :order_by have the total_votes DESC value (when it is nil).

What is the best way to do this?

+4
source share
1 answer

In the controller

 params[:order_by] ||= "total_votes DESC" 

or

 # fetch returns the default value if the key is not present params.fetch(:order_by, "total_votes DESC") 

Hash # fetch

+7
source

Source: https://habr.com/ru/post/1401298/


All Articles