【发布时间】:2016-07-07 09:36:05
【问题描述】:
我正在按日期范围查询订单。 它现在正在工作,但我在控制器中有逻辑,而不是在模型中。我知道这应该在模型中。 我尝试了几种方法,但都没有运气。
问题: 这样做的正确方法是什么?
我正在查看 Rails Guides Active Record Querying 部分 2.2 数组条件: http://guides.rubyonrails.org/active_record_querying.html
还研究了堆栈溢出中的几个问题: undefined local variable or method `params' for #<Result:0x3904b18>
undefined local variable or method `user_params' rails 4
ruby query between two date parameters
orders.rb现在清空以避免错误
def self.search_range
end
orders_controller.rb
def search_range
@orders = Order.where("created_at >= :start_date AND created_at <= :end_date",{start_date: params[:start_date], end_date: params[:end_date]}).order("created_at desc")
end
search_range.html.erb我在这里输入日期范围
<div class="container-fluid events-container">
<div class="row">
<div class="col-sm-12">
<h1>Orders</h1>
</div>
</div>
<div class="row">
<div class="col-sm-6 form-group">
<%= form_tag search_range_path, :method => 'get', class:"" do %>
<p>
<%= text_field_tag :start_date, params[:start_date] %>
<%= text_field_tag :end_date, params[:end_date] %>
<%= submit_tag "Search", :name => nil, class:"btn btn-primary" %>
</p>
<% end %>
</div>
</div>
<table class="table">
<tr>
<th>amount</th>
<th>status</th>
<th>Last Updated</th>
<th>Order Id</th>
<th>manage</th>
</tr>
<% @orders.each do |order| %>
<tr>
<td><%= order.total %></td>
<td><%= order.order_status.name %></td>
<td><%= order.created_at.strftime("%m/%d/%Y") %></td>
<td><%= order.id %></td>
<td><%= link_to 'details', order %> |
<%= link_to 'edit', edit_order_path(order) %> |
<%= link_to 'delete', order_path(order), method: :delete, data: { confirm: 'Are you sure?' } %>
</td>
</tr>
<% end %>
<tr><td colspan="4"></td></tr>
</table>
<div class="row">
<div class="col-sm-12">
<hr>
</div>
</div>
</div>
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4 activerecord