Ruby on rails Rails:不允许的参数:id
我想使用rails 4作为服务器,将数据发布到rails,然后将数据保存到数据库。为此,我通过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}).
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。