我的活动模型有viewed
列。默认情况下,viewed
列的值为null
。我尝试创建一个函数,将viewed
列的值设置为viewed
,而不是null
。
我有一个角度函数,
var activities = $scope.activities
$scope.viewActivities = function (){
angular.forEach(activities, function (activitie) {
viewActivities.create({
viewed: `viewed`
})
});
}
这将为活动变量中的每个对象调用viewActivities.create
函数。
这是viewActivities.create
服务,
app.factory('viewActivities', ['$http', function($http) {
return {
create: function(activitie) {
return $http.post('/activities.json', activitie);
}
};
}])
当我运行此代码时,我收到404错误。当我检查我的rails控制台时,它显示,
开始POST" /activities.json"对于127.0.0.1在2016-01-05 12:06:31 +0100 AbstractController :: ActionNotFound(无法为ActivitiesController找到action' create')
所以我需要在我的ActivitiesController中创建一个create
动作,
def create
end
我需要在此处将值viewed
插入viewed
列?
*已更新*
resources :activities, only: [:create, :destroy, :index, :show]
目前,我已将此设置为
def create
@activity = PublicActivity::Activity.find_or_create_by activity_params
redirect_to :root
end
private
def activity_params
params.require(:activity).permit(
:viewed
)
end
当我运行viewActitivies
函数时,我会在rails控制台中找到它,
Started POST "/activities.json" for 127.0.0.1 at 2016-01-05 12:31:17 +0100
Processing by ActivitiesController#create as JSON
Parameters: {"viewed"=>"viewed", "activity"=>{"viewed"=>"viewed"}}
User Load (0.1ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? ORDER BY "users"."id" ASC LIMIT 1 [["id", 4]]
PublicActivity::Activity Load (2.6ms) SELECT "activities".* FROM "activities" WHERE "activities"."viewed" = ? LIMIT 1 [["viewed", "viewed"]]
Redirected to http://localhost:3000/
Completed 302 Found in 28ms (ActiveRecord: 2.7ms)
但viewed
值保持null
。
答案 0 :(得分:0)
我不清楚您的代码是做什么的,但请注意下面的代码对activity
activities
对象没有做任何事情。阵列。
angular.forEach(activities, function (activitie) {
// Nothing is done with the activitie argument
viewActivities.create({
viewed: `viewed`
})
});
上面的内容会循环遍历activities
,但每次都会向create
函数传递一个新对象(具有相同的属性值)。我猜你想做这样的事情:
angular.forEach(activities, function (activitie) {
activitie.viewed = 'viewed';
viewActivities.create(activitie)
});