我的Rails中的URL应该是这样的:
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'
以上将访问文章控制器,索引操作。甚至:
resources :articles do
collection do
get 'recent'
end
end
允许使用 http://foobar.com/articles/recent
等网址,但需要在文章控制器中执行“最近”操作。
在一天结束时,两者看起来都很有用。但这是普遍的共识?使用查询字符串方法( http://foobar.com/articles?category=recent
)或其他方式( http://foobar.com/articles/recent
)。
期待您的建议。
答案 0 :(得分:0)
在我看来,articles/recent
更加清晰,因为它避免了使用条件填充控制器操作,并且从用户角度看也更好。
答案 1 :(得分:0)
例如,如果您想要“旧”而不是“最近”,则无法简单地传入“旧”参数,但必须使用自己的操作和视图在同一控制器中对其进行硬编码作为“最近”,当然更多的工作是无用的。