Установка значения по умолчанию для атрибута param в контроллере, если он равен nil? - PullRequest
4 голосов
/ 14 марта 2012

Я разрешаю пользователям сортировать сообщения по created_at и 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>

Я бы хотел, чтобы :order_by имел значение total_votes DESC по умолчанию (когда оно равно nil).

Какой лучший способделать это?

1 Ответ

7 голосов
/ 14 марта 2012

В контроллере

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

Или

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

Hash # fetch

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...