如何在Rails上创建搜索日期字段以查找数据库中的项目

时间:2017-07-26 11:56:37

标签: ruby-on-rails

我目前有:

public function find( string $lang, string $sku ) {
    $query = [
        'lang'       => $lang,
        'post_type'  => 'product',
        'meta_query' => [
            [
                'key'     => '_sku',
                'value'   => $sku,
                'compare' => '='
            ]
        ],
        'tax_query'  => [
            [
                'taxonomy' => 'product_type',
                'terms'    => [ 'grouped' ],
                'field'    => 'name',
            ]
        ]
    ];
    $posts = ( new WP_Query() )->query( $query );

    return count( $posts ) > 0 ? $posts[0] : null;
}

我希望它成功:

def index
     @sheets = Sheet.where(user_id: current_user)
end

但是我希望我视图中的字段是带有下拉日历的DATE字段,以便用户更轻松地搜索工作表,我该怎么做?我已经查看了:http://www.rymcmahon.com/articles/2

1 个答案:

答案 0 :(得分:0)

params[:search]是一个日期吗? 使用TimeZone.parse将日期字符串解析为实际日期。

如果是这样,您的where code可以稍作修改:

Sheets.where(created_at: Time.zone.parse(params[:search])) 

但这实际上只会返回创建时间与输入时间(到第二个)完全相同的工作表。那么,它真的是params[:start_date]& params[:end_date]?至少那时你可以返回created_at在一个日期范围内的所有工作表:

Sheets.where( created_at: Time.zone.parse(params[:start_date])..Time.zone.parse(params[:end_date]) )