【发布时间】:2013-12-10 04:35:17
【问题描述】:
在我的 Rails 4 项目中,我有这样的路线(通过 rake 路线):
user_articles_path GET /users/:user_id/articles(.:format) articles#index
这很好,/users/1/articles 显示用户 1 的文章。
从所有用户那里获取所有文章的最简单方法是什么?
/users/*/articles 或 /users/all/articles 这样的东西会很甜蜜。
这里是 Articlescontroller 索引方法:
def index
@articles = if params[:user_id]
user = User.find(params[:user_id])
user.articles.where('content like ?', "%#{params[:search]}%").page(params[:page]).per_page(5)
else
current_user.articles.where('content like ?', "%#{params[:search]}%").page(params[:page]).per_page(5)
end
end
我根据用户/ID 显示文章,然后如果用户登录(通过 Twitter)我向他们显示他们的文章。
更新
不确定这是否太 hacky,但这是我当前的索引方法。它可以像我想要的那样工作,但它可能会被简化:
def index
if current_user
if params[:user_id]
user = User.find(params[:user_id])
@articles = user.articles.where('content like ?', "%#{params[:search]}%").page(params[:page]).per_page(5)
else
@articles = current_user.articles.where('content like ?', "%#{params[:search]}%").page(params[:page]).per_page(5)
end
else
@articles = Article.all.where('content like ?', "%#{params[:search]}%").page(params[:page]).per_page(5)
end
结束
文章可供登录和注销的用户使用,通过简单的路由来显示特定用户的文章。欢迎提出清洁建议。
【问题讨论】:
-
文章有一个:
class Article < ActiveRecord::Base belongs_to :user end -
您尝试做的事情是可能的,但您应该创建索引并显示方法以使其成为 RESTful。索引用于“全部”,显示用于单个记录。请参阅第 2.2 节。http://guides.rubyonrails.org/routing.html
标签: ruby-on-rails ruby-on-rails-4