Javascript 控制器操作正在以html格式处理,而不是执行.js.erb文件

Javascript 控制器操作正在以html格式处理,而不是执行.js.erb文件,javascript,ruby-on-rails,ajax,Javascript,Ruby On Rails,Ajax,我正在尝试将datepicker添加到我的应用程序中,以将日期值传递给我的控制器,并根据日期范围获取筛选的记录…但我不断收到错误 以下是我的费用控制者行动: def dateFilter @expenses = current_user.expenses.where(:created_at => params[:start_date]..params[:end_date]) respond_to do |format| format.html format

我正在尝试将datepicker添加到我的应用程序中,以将日期值传递给我的控制器,并根据日期范围获取筛选的记录…但我不断收到错误

以下是我的费用控制者行动:

def dateFilter 
   @expenses = current_user.expenses.where(:created_at =>   params[:start_date]..params[:end_date])

  respond_to do |format|
    format.html
    format.json { render json: @expenses }
    format.js
   end
end
我的应用程序/views/expenses/dateFilter.js.erb

$('.dateFilter').append('<%= escape_javascript(render(@expenses)) %>');
304ms内完成500个内部服务器错误

ActionView::Template::Error (undefined method `datepicker_input' for #<#<Class:0x000000037b87e0>:0x00000003500570>):
1: <%= form_tag({:controller => 'expenses', :action => 'dateFilter'}, :remote => true) do %>
2:     <%= datepicker_input "expense", :start_date, :class => 'dateFilter', :dateFormat => 'mm/dd/y' %>
3:     <%= datepicker_input "expense", :end_date, :class => 'dateFilter', :dateFormat => 'mm/dd/y' %>
4:     <%= submit_tag "Submit" %>
5:     <% end %> 
app/views/expenses/dateFilter.html.erb:2:in `block in _app_views_expenses_date_ilter_html_erb__2248059185612722443_31189320'
app/views/expenses/dateFilter.html.erb:1:in `_app_views_expenses_date_ilter_html_erb__2248059185612722443_31189320'
app/controllers/expenses_controller.rb:42:in `dateFilter'

有人请帮我解决我的问题…

范围查询只对DateTime对象起作用,而您在其中传递字符串。尝试将参数转换为datetime对象,它应该可以工作

@expenses=current_user.expenses.where:created_at=>params[:start_date]。to_datetime..params[:end_date]。to_datetime

您的表单标签有一个:class=>“date_form”和:remote=>true,应该作为javascript请求正确提交。但是application.js中的代码

$“日期表格”。提交

这意味着date_表单不是一个类,而是一个id

是否有另一张id为date_form的表格

我建议把console.logis放在这甚至可以执行的地方;在您的application.js之前

$.ajax({
  type: 'POST',

谢谢你的回答,但是我的dateFilter.js.erb没有被执行。控制器操作作为html而不是js执行。它给出了缺少模板的错误。根据您在问题中显示的错误,@expenses对象为nil,这就是渲染对象抛出错误的原因。但是你现在所说的和问题中的不一样?您是否有用于呈现html的datefilter.html.erb?请发布整个错误堆栈,以便我能更好地帮助您。是的,添加到_datetime给了我命名错误,但它帮助我找到了一个拼写错误,修复后我现在得到了丢失的模板错误。我有_dateFilter.html.erb部分,我在上面的日志中显示了它。我还编辑了日志以显示缺少模板的错误。嘿,dateFilter是一个部分。请将文件重命名为dateFilter.html.erb,它应该可以工作。请记住,Rails的理念是约定优于配置。你需要特别遵循这一点。正如你所建议的,我添加了console.log,即使我从我的表单标签中删除了:class=>“date\u form”和$“date\u form”。submit。。从我的application.js。将我的_dateFilter.html.erb重命名为dateFilter.html.erb后,我编辑了日志。
Started GET "/expenses/dateFilter" for 127.0.0.1 at 2015-01-02 15:49:39 +0530
ActiveRecord::SchemaMigration Load (0.2ms)  SELECT "schema_migrations".* FROM "schema_migrations"
Processing by ExpensesController#dateFilter as HTML
User Load (0.4ms)  SELECT "users".* FROM "users" WHERE "users"."id" = 1 LIMIT 1
Expense Load (0.4ms)  SELECT "expenses".* FROM "expenses" WHERE "expenses"."user_id" = ? AND ("expenses"."created_at" BETWEEN NULL AND NULL) ORDER BY created_at DESC  [["user_id", 1]]
Rendered expenses/dateFilter.html.erb within layouts/application (90.0ms)
ActionView::Template::Error (undefined method `datepicker_input' for #<#<Class:0x000000037b87e0>:0x00000003500570>):
1: <%= form_tag({:controller => 'expenses', :action => 'dateFilter'}, :remote => true) do %>
2:     <%= datepicker_input "expense", :start_date, :class => 'dateFilter', :dateFormat => 'mm/dd/y' %>
3:     <%= datepicker_input "expense", :end_date, :class => 'dateFilter', :dateFormat => 'mm/dd/y' %>
4:     <%= submit_tag "Submit" %>
5:     <% end %> 
app/views/expenses/dateFilter.html.erb:2:in `block in _app_views_expenses_date_ilter_html_erb__2248059185612722443_31189320'
app/views/expenses/dateFilter.html.erb:1:in `_app_views_expenses_date_ilter_html_erb__2248059185612722443_31189320'
app/controllers/expenses_controller.rb:42:in `dateFilter'
$.ajax({
  type: 'POST',