Cam*_*ron 3 ruby activerecord ruby-on-rails rails-activerecord
如何在Rails中创建一个可选的位置?
我试过了:
@pages = Page
.where(status: params[:status].present? ? params[:status] : 1)
.where(parent_id: nil) if params[:status].blank?
.order(sort_column + ' ' + sort_direction)
Run Code Online (Sandbox Code Playgroud)
但它看起来要退出该区块,而是返回:undefined method 'where' for true:TrueClass.
您可以将条件传递给where哈希语法,因此只需创建包含所有条件的哈希并将其传递给where
conditions = {}
conditions[:status] = params[:status].present? ? params[:status] : 1
conditions[:parent_id] = nil if params[:status].blank?
@pages = Page.where(conditions).order(sort_column + ' ' + sort_direction)
Run Code Online (Sandbox Code Playgroud)
小智 6
您可以将声明拆分为三行.Rails会延迟加载您的查询,所以不要担心这里的性能.它会工作正常:
@pages = Page.where(status: params[:status].present? ? params[:status] : 1)
@pages = @pages.where(parent_id: nil) if params[:status].blank?
@pages = @pages.order(sort_column + ' ' + sort_direction)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
841 次 |
| 最近记录: |