Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails通过html响应restful输入_Ruby On Rails_Rest - Fatal编程技术网

Ruby on rails Rails通过html响应restful输入

Ruby on rails Rails通过html响应restful输入,ruby-on-rails,rest,Ruby On Rails,Rest,我们有一个Rails应用程序,通过Restful界面添加工作订单 这是控制器代码: # POST /workorders # POST /workorders.json def create @workorder = Workorder.new(params[:workorder]) respond_to do |format| if @workorder.save format.html { redirect_to @workorder, notice: 'Wor

我们有一个Rails应用程序,通过Restful界面添加工作订单

这是控制器代码:

# POST /workorders
# POST /workorders.json
def create
  @workorder = Workorder.new(params[:workorder])

  respond_to do |format|
    if @workorder.save
      format.html { redirect_to @workorder, notice: 'Workorder was successfully created.' }
      format.json { render json: @workorder, status: :created, location: @workorder }
  else
      format.html { render action: "new" }
      format.json { render json: @workorder.errors, status: :unprocessable_entity }
    end
  end
end
添加workorder时,响应来自以下代码行:

format.html { redirect_to @workorder, notice: 'Workorder was successfully created.' }
其他应用程序得到的回报是:

<html><body>You are being <a href="http://ndeavor.ameipro.com/workorders/50">redirected</a>.</body></html>

response.headers['ETag']=@workorder.id
可能有效

但更好的方法是发送json并让客户机解析,而不是试图从HTML中提取数据

查看for Mule,您应该能够如下设置accept标头:

props.put("Accept", "application/json");
rails应用程序将使用
format.json
块对其进行响应

或者,您可以通过从
respond\u to
块中调用
render:json
使其始终使用json进行响应:

def create
  @workorder = Workorder.new(params[:workorder])
  if @workorder.save
    render json: @workorder, status: :created, location: @workorder
  else
    render json: @workorder.errors, status: :unprocessable_entity
  end
end

如何发送json?客户端应用程序正在发送html作为输入,以创建新的工作订单。有可能有html输入,但有json响应吗?我在
format.html{redirect_到@workorder,response.headers['ETag']=@workorder.id时得到了>错误的参数数(3对2),注意:“workorder已成功创建”。}
我将控制器更改为'format.html{redirect_到@type,response.headers['ETag']=@type.id}`。我在响应标题中获取ETag。但是,它的价值是ETag:“fbedd2e864b1fd43c6ec4da7b51e0e47”你的“其他应用”在做什么?它的代码是什么,用例是什么?我们正在使用Mule将数据从资产管理系统移动到新的Rails应用程序。对于一些测试,我们使用Wiztools Restclient。
def create
  @workorder = Workorder.new(params[:workorder])
  if @workorder.save
    render json: @workorder, status: :created, location: @workorder
  else
    render json: @workorder.errors, status: :unprocessable_entity
  end
end