首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >控制器操作正在作为html处理,而不是执行.js.erb文件

控制器操作正在作为html处理,而不是执行.js.erb文件
EN

Stack Overflow用户
提问于 2015-01-01 12:57:05
回答 2查看 369关注 0票数 0

我正在尝试将datepicker添加到我的应用程序中,以便将日期值传递给我的控制器,并根据date range...but获得过滤后的记录。

下面是我的expenses_controller操作:

代码语言:javascript
复制
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

我的app/views/expenses/dateFilter.js.erb

代码语言:javascript
复制
$('.dateFilter').append('<%= escape_javascript(render(@expenses)) %>');

app/assets/javascripts/application.js

代码语言:javascript
复制
//= require turbolinks
//= require jquery
//= require jquery_ujs
//= require bootstrap
//= require_tree .
//= require jquery.ui.all
//= require jquery.ui.datepicker

$(document).ready(function() {

  $('#date_form').submit(function (){  

    $.ajax({
      type: 'POST',
      url: "/expenses/dateFilter", 
      beforeSend: function (xhr) {xhr.setRequestHeader("Accept", "text/javascript");},
     data: { 'start_date' : $("input[name='expense[start_date]']").datepicker(),  'end_date' : $("input[name='expense[end_date]']").datepicker()}
     success: function(data) { <%= render "expenses/dateFilter" %>}
});

});

我的dateFilter.html.erb partial如下

代码语言:javascript
复制
<%= form_tag({:controller => 'expenses', :action => 'dateFilter'}, :class =>  'date_form', :remote => true) do %>
<%= datepicker_input "expense", :start_date, :class => 'dateFilter', :dateFormat => 'mm/dd/y' %>
<%= datepicker_input "expense", :end_date, :class => 'dateFilter', :dateFormat => 'mm/dd/y' %>
<%= submit_tag "Submit" %>
<% end %> 

我的服务器日志如下

代码语言:javascript
复制
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)

在304ms内完成了500个内部服务器错误

代码语言:javascript
复制
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'

谁能帮我解决我的问题。

EN

回答 2

Stack Overflow用户

发布于 2015-01-01 14:36:45

范围查询只在DateTime对象上工作,并且您在内部传递字符串。尝试将params转换为datetime对象,它应该可以工作

@expenses = current_user.expenses.where(:created_at => expenses

票数 0
EN

Stack Overflow用户

发布于 2015-01-02 12:29:38

您的form_tag有一个:class => 'date_form':remote => true,应该作为javascript请求正确提交。但是您在application.js中拥有的代码

$('#date_form').submit(

这意味着date_form不是一个类,而是一个id。

是否存在以date_form作为id的另一种形式?

我建议你把console.log("is this even getting executed");放在你的application.js之前

代码语言:javascript
复制
$.ajax({
  type: 'POST',
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27728377

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档