【问题标题】:How to get json responses on form submissions via ruby on rails如何通过 ruby​​ on rails 获取表单提交的 json 响应
【发布时间】:2019-04-14 04:58:36
【问题描述】:

第一次使用 Ruby on Rails。

在我的控制器中,我正在按如下方式保存新用户信息,并且通过下面的代码一切正常

 # POST /users
  def create
    @user = User.new(user_params)

    if @user.save
      session[:user_id] = @user.id   
      redirect_to @user, notice: 'User was successfully created.'
    else
      render :new
    end
  end

现在我需要在提交表单时通过 json 获取消息响应,以便我可以从前端访问它。为此, 我在下面添加了代码,但它显示错误

ActionController::UnknownFormat

我在这里找到了参考解决方案,但无法使用

link

  # POST /users
  def create
    @user = User.new(user_params)

    respond_to do |format|
      if @user.save
        session[:user_id] = @user.id   
        format.json { render json: @user, message: 'User was successfully created.' }  
      else
        #render :new

        format.json { render json: @user, message: 'User cannot be created.' }    
      end
    end 
  end

【问题讨论】:

  • 我猜你没有发送正确格式的请求。您可以通过查看应该显示类似Processing by UsersController#create as HTML 的日志来验证这一点。您需要将请求发送到/users.json 或发送content-type=application/json 标头。
  • 先生 format.html 正在工作,但 format.json 是导致错误的原因。请问有什么地方我需要一些配置。感谢之间
  • 您是如何发送请求的?请使用stackoverflow.com/help/mcve 编辑您的问题

标签: ruby-on-rails


【解决方案1】:

在你的情况下,不需要像这样写下来。或者使用 respond_to

如果您使用的是 rails 5,只需将其写下来:

# POST /users
def create
    @user = User.new(user_params)

    if @user.save
       session[:user_id] = @user.id   
       render json: @user, message: 'User was successfully created.' 
     else
       #render :new

       render json: @user, message: 'User cannot be created.' 
  end
end

并在 routes.rb 文件中提及

resources :tasks, defaults: {format: :json}

如果您还在 routes.rb 文件中定义命名空间,那么

namespace :api, defaults: {format: :json} do
   resources :tasks1
   resources :tasks2
   .............
end

【讨论】:

    【解决方案2】:

    通过将此添加到您的路线配置中解决

    resources :entries, defaults: { format: 'json' }
    

    stackoverflow source

    【讨论】:

      猜你喜欢
      • 2021-07-02
      • 1970-01-01
      • 1970-01-01
      • 2011-03-06
      • 1970-01-01
      • 2020-02-11
      • 1970-01-01
      • 2011-03-11
      • 2015-10-16
      相关资源
      最近更新 更多