rails - 请求被视为HTML而不是json

时间:2015-06-22 17:10:21

标签: ruby-on-rails

:(卡在这里。感谢任何帮助。

我的日志说

  

在2015-06-22 22:21:59 +0530开始发布“/ sign_in”127.0.0.1   用户处理:: SessionsController #create as HTML

但我尝试通过jquery

请求json

$。AJAX({

type: 'POST',
contentType: "application/json",
url: 'http://localhost:3000/sign_in',

...

我的控制器

class Users::SessionsController < Devise::SessionsController
 respond_to :json
def create

       respond_to do |format|
                format.html {
    .....
    }
        format.json {

    .....
        }

所以我在这里做错了,我需要将请求作为“#create as JSON”

2 个答案:

答案 0 :(得分:2)

向您的ajax添加dataType

type: 'POST',
contentType: "application/json",
url: 'http://localhost:3000/sign_in',
dataType: "json"

修改

您正在向操作create发布一些数据,因此您应该只操作操作中的数据,然后将其重定向到其他位置....您不应该在操作中创建任何信息,因为它是post而不是get。例如:

def create
  # find your user based on the params
  my_user = User.find(params[:id])
  # you can manipulate the user or even save it in a session

  # redirect to the action show for example
  redirect_to user_path(my_user)
end

def show
  @user = User.find(params[:id])
  respond_to do |format|
    format.html
    format.json { render json: @user }
  end
end

通过这种方式,如果您使用show访问.json操作的网址,您将获得json中的用户信息。

答案 1 :(得分:0)

尝试将dataType: "json"添加到您的ajax请求中。