Предложения, необходимые для подхода на маршруте Rails - PullRequest
0 голосов
/ 30 марта 2011

Если мои URL-адреса в Rails выглядят следующим образом:

http://foobar.com/articles?category=recent 

- ИЛИ -

http://foobar.com/articles/recent

Я считаю, что первый из них более RESTFUL, но последнийбыть чище (по кодам).Например, код может выглядеть следующим образом:

В контроллере статьи:

def index
  if params[:category] == 'recent'
    @articles = Article.by_recent
  elsif params[:category] == 'expired'
    @articles = Article.by_expired
  end
end

В статье просмотр индекса:

<% unless @articles.blank? %>
  <ul>
    <% @articles.each do |article| %>
      <li><%= article.title %></li>
      <li><%= article.content %></li>
    <% end %>
  </ul>
<% end %>

С http://foobar.com/articles/recent, мне бы пришлось настроить маршруты.Что-то вроде:

match 'articles/:category' => 'articles#index' 

Выше будет доступ к контроллеру статьи, действие index.Или даже:

resources :articles do
  collection do
    get 'recent'
  end
end

, который учитывает URL-адреса, такие как http://foobar.com/articles/recent, но нуждается в 'недавнем' действии в контроллере Article.

И то, и другое кажется довольно полезнымв конце дня.Но каково общее согласие?Используя подход строки запроса (http://foobar.com/articles?category=recent) или другой способ (http://foobar.com/articles/recent).

Ждем ваших предложений.

Ответы [ 2 ]

0 голосов
/ 30 марта 2011

Очевидно, что вы сказали, что можете пойти любым путем, но поскольку что-то вроде "недавнего" является условием или запросом к статьям, я бы пошел с первым.Если бы это был вложенный атрибут и его собственная модель, второй подход, возможно, лучше, но поскольку это не так, вы действительно теряете большую гибкость, чтобы изменить и реорганизовать подход в будущем.

Например, если вы хотите сделать «старый», а не «недавний», вы не сможете просто передать «старый» параметр, но вам придется жестко его кодировать с его собственным действием и представлениями втот же контроллер, что и «недавний», который, конечно, гораздо больше работает даром.

0 голосов
/ 30 марта 2011

На мой взгляд, articles/recent намного чище, поскольку позволяет избежать наполнения вашего контроллера условными операциями, а также выглядит лучше с точки зрения пользователя.

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