当前位置: 首页 > 面试题库 >

带有format.js的ActionController :: UnknownFormat用于Ajax实现(第4条)

南宫浩皛
2023-03-14
问题内容

我尝试在Rails 4的应用程序中使用Ajax。要将我的js发送到客户端,请使用:

   respond_to do |format|
        format.js 
   end

在我的控制器中。但这是我的控制器生成的错误“ ActionController :: UnknownFormat”。有人可以帮我吗?

main_controller.rb:

class Oweb::MainController < ApplicationController
    def index
        .....
    end
    def setmagasinstatus
      begin                     
       @mag = Magasin.find(params[:id]) 
       if @mag.etatmagasin.lib == 'Ouvert'
            @mag.etatmagasin = Etatmagasin.where(lib: 'Fermé').first
       else
            @mag.etatmagasin = Etatmagasin.where(lib: 'Ouvert').first
       end 
      rescue ActiveRecord::RecordNotFound
       logger.error("Attempt to access invalid Magasin #{params[:id]}")
       redirect_to_index("Invalid Magasin")
      else
       @mag.save
       @mags = Magasin.where(user_id: current_user.id)

       respond_to do |format|
            format.js 
       end

     end
    end
end

setmagasinstatus.js.erb:

page.replace_html("bloc_magasin", :partial => "listmagasins", :object => @mags)

layouts / application.html.slim:

doctype html
html
    head
        meta charset="utf-8"
        meta http-equiv="X-UA-Compatible" content="IE=edge"
        meta name="viewport" content="width=device-width, initial-scale=1.0"
        meta name="description" content=""
        meta name="author" content=""

        title = yield(:title)

        = stylesheet_link_tag "application"
        = csrf_meta_tags

    body
     .........
                = yield

        = javascript_include_tag "application"
        = yield :scripts

gemfile:

source 'https://rubygems.org'
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.1.1'

group :development do
  gem 'mysql2'
end
group :production do
  gem 'pg'
end

gem 'sass-rails', '~> 4.0.3'

gem 'uglifier', '>= 1.3.0'

gem 'coffee-rails', '~> 4.0.0'

gem 'therubyracer',  platforms: :ruby


gem 'jquery-rails'

gem 'turbolinks'

gem 'jbuilder', '~> 2.0'

gem 'sdoc', '~> 0.4.0',          group: :doc

gem 'spring',        group: :development

gem 'devise', '~> 3.2.4'

gem 'slim-rails', '~> 2.1.4'

gem 'bootstrap-sass', '~> 3.1.1.1'

gem 'compass-rails', '~> 1.1.7'

gem 'simple_form', '~> 3.0.2'
gem 'activeadmin', github: 'gregbell/active_admin'

gem 'polyamorous', github: 'activerecord-hackery/polyamorous'

gem 'ransack', github: 'activerecord-hackery/ransack'

gem 'formtastic', github: 'justinfrench/formtastic'

 gem 'debugger', group: [:development, :test, :production]

gem 'geocoder'
gem 'gmaps4rails', '~> 2.1.2'

日志:

Started GET "/oweb/main/setmagasinstatus?id=3" for 192.168.56.1 at 2014-08-01 06:22:06 +0000
Processing by Oweb::MainController#setmagasinstatus as HTML
  Parameters: {"id"=>"3"}
Completed 406 Not Acceptable in 103ms

ActionController::UnknownFormat (ActionController::UnknownFormat):
  app/controllers/oweb/main_controller.rb:24:in `setmagasinstatus'


  Rendered /home/vagrant/.rvm/gems/ruby-2.1.1/gems/actionpack-4.1.1/lib/action_dispatch/middleware/templates/rescues/_source.erb (2.1ms)
  Rendered /home/vagrant/.rvm/gems/ruby-2.1.1/gems/actionpack-4.1.1/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (2.2ms)
  Rendered /home/vagrant/.rvm/gems/ruby-2.1.1/gems/actionpack-4.1.1/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb (1.1ms)
  Rendered /home/vagrant/.rvm/gems/ruby-2.1.1/gems/actionpack-4.1.1/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (27.1ms)

问题答案:

抓住:

您的控制台日志显示:

由Oweb :: MainController#setmagasinstatus处理 为HTML

在您的控制器操作中,您不支持HTML响应。因此,您将面临的错误UnknownFormat

解:

添加format: "js"您的ajax调用。例如:

$.ajax url: "/oweb/main/setmagasinstatus", data: 'id=' + id, format: 'js'


 类似资料:
  • 问题内容: 在我的rails应用程序中,我向服务器发出了ajax请求,以存储一些数据。以前可以正常工作,但是现在出现错误: 如下是控制器和我声明数据类型为JSON的javascript文件 function.js 完整的错误日志为: 问题答案: 更新操作,如下所示: 您正在使用的方法,但ANOT指定 格式 ,其中呈现页面。因此,错误。

  • 1 引言 Ajax 因为大量地使用了 Javascript ,而调试 Javascript 的确不是件容易的事,在这方面只有不停地测试,还要靠耐心。而且 Ajax 本身可能还有一些安全方面的东西需要考虑,但这些话题需要你自已去学习了。 在试验了简单的 Html 返回片段之后,让我们再体验一下 Json 的应用吧。为了使用 Json ,我下载了 simplejson 模块。我下载的是 1.1 版本。

  • 1 引言 经过一段时间的学习,我想大家对于 Django 的一些基础的东西已经有所了解,但 Django 本身的内容不仅仅如此,它还在发展中,还有许多的专题是我还没有向大家介绍的。因此,随着我和大家一同地学习,我会继续向大家介绍一些更高级的话题。 随着对于web的了解越来越多,我对于 web 上的开发也越来越有兴趣。的确,在实际的工作中我也发现,现在越来越强调团队的管理,许多事情单纯搞一两个人是很

  • 本文向大家介绍使用Ajax实现简单的带百分比进度条实例,包括了使用Ajax实现简单的带百分比进度条实例的使用技巧和注意事项,需要的朋友参考一下 需求:当进行文件长传保存等操作时,能在页面显示一个带百分比的进度条,给用户一个好的交互体验 实现步骤 JSP页面 1.添加table标签   这个table标签要隐藏,进度条执行的时候再显示。id为tdOne和tdTwo分别为进度条的蓝色和灰色区域。 2.

  • Common Lisp 操作符分为三类:可自定义的函数和宏,以及不能自定义的特殊形式 (specialform)。本章将讲述用函数来扩展 Lisp 的技术。但这里的 "技术" 和通常的含义不太一样。关于这些函数,重要的不是知道怎样写,而是要知道它们从何而来。编写 Lisp 扩展所使用的技术和你编写其他任何 Lisp 函数所使用的技术大同小异。编写 Lisp 扩展的难点并不在于代码怎么写,而在于决定

  • 我正在尝试使用PostgreSQL 9.1和PostGIS 1.5使用GlassFish 4创建一个JPA实体。 我已经通过在 domain/lib 目录中添加 和 jar 来创建/配置了一个数据源。 我已经创建了一个简单的实体< code>MyPoint来处理PostGIS点: 和一个带有方法的点主页,如下所示: 在战争部署中,将创建包含列和的表。列类型为。这是表架构: 问题是在实体管理器上调用