Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.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:不允许的参数:id_Ruby On Rails_Http - Fatal编程技术网

Ruby on rails Rails:不允许的参数:id

Ruby on rails Rails:不允许的参数:id,ruby-on-rails,http,Ruby On Rails,Http,我想使用rails 4作为服务器,将数据发布到rails,然后将数据保存到数据库。为此,我通过http和update方法来检测数据。但当服务器中接收到数据并且rails想要保存数据时,我会得到不允许的参数:iderror。我按以下代码发布数据: $scope.updateRadif = function(index, ID){ console.log(ID); RadifSecure.update(index, {bolouk_id: 1, id: ID}).

我想使用rails 4作为服务器,将数据发布到rails,然后将数据保存到数据库。为此,我通过
http
update
方法来检测数据。但当服务器中接收到数据并且rails想要保存数据时,我会得到
不允许的参数:id
error。我按以下代码发布数据:

  $scope.updateRadif = function(index, ID){
        console.log(ID);
        RadifSecure.update(index, {bolouk_id: 1, id: ID}).$promise.then(function(data){
            //...
        })
            .catch(function (err) {
                //...

            })
    };
app.factory('RadifSecure', function($resource) {
    return $resource("/api/bolouks/:bolouk_id/radifs/:id", { bolouk_id: '@bolouk_id', id: "@id" },
        {
            'show':    { method: 'GET', isArray: false },
            'update':  { method: 'PUT' },
            'destroy': { method: 'DELETE' }
        }
    );
});
我在rails服务器中接收数据:

  def update
    @radif = Radif.find(params[:id])
    respond_to do |format|
      if @radif.update_attributes(radif_params)
        format.json { head :no_content }
      else
        format.json { render json: @radif.errors, status: :unprocessable_entity }
      end
    end
  end
  private
  def radif_params
    params.require(:radif).permit(:bolouk_id, :describe, :price)
  end
当我检查服务器日志时,数据被正确接收,但rails不允许保存在数据库中:

Started PUT "/api/bolouks/1/radifs/16?describe=sdsad&price=3423432" for 127.0.0.1 at 2014-09-03 11:14:27 +0430
Processing by Api::V1::RadifsController#update as JSON
  Parameters: {"bolouk_id"=>"1", "id"=>"16", "describe"=>"sdsad", "price"=>"3423432", "radif"=>{"id"=>"16", "bolouk_id"=>"1"}}
  User Load (0.0ms)  SELECT  "users".* FROM "users"  WHERE "users"."id" = 7  ORDER BY "users"."id" ASC LIMIT 1
  Radif Load (0.0ms)  SELECT  "radifs".* FROM "radifs"  WHERE "radifs"."id" = ? LIMIT 1  [["id", 16]]
Unpermitted parameters: id
   (0.0ms)  begin transaction
   (0.0ms)  commit transaction
Completed 204 No Content in 29ms (ActiveRecord: 0.0ms)
我尝试用其他代码来解决这个问题,但没有成功

def update
    @radif = Radif.find(params[:id])
    radif.update!(radif_params)
end

有人能帮我解决这个问题吗?

我不知道你为什么需要发送id你可以试试permit
:id
参数require(:radif)。permit(:bolouk_id,:description,:price,:id)
首先,我必须在数据库中按id找到
radif
,然后更新记录。我以前这样做过,但我又遇到了这个错误:
在4ms内完成了204个无内容的操作
。当我想更新数据库中的记录时,数据库不会更改记录的id。