Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.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 ActiveResource::基本或Redmine错误?_Ruby On Rails_Api_Ruby On Rails 3.2_Redmine_Activeresource - Fatal编程技术网

Ruby on rails Rails ActiveResource::基本或Redmine错误?

Ruby on rails Rails ActiveResource::基本或Redmine错误?,ruby-on-rails,api,ruby-on-rails-3.2,redmine,activeresource,Ruby On Rails,Api,Ruby On Rails 3.2,Redmine,Activeresource,我正试图通过RESTAPI使用Redmine,以保持和更新项目成员资格,如中所述 为此,我在以RoR编写的客户机应用程序中加入了以下“redmine_项目”模型: class RedmineProject < ActiveResource::Base self.site ='http://localhost:3001' self.format = :json self.user = 'admin' self.password = 'admin' self.element

我正试图通过RESTAPI使用Redmine,以保持和更新项目成员资格,如中所述

为此,我在以RoR编写的客户机应用程序中加入了以下“redmine_项目”模型:

class RedmineProject < ActiveResource::Base
  self.site ='http://localhost:3001'
  self.format = :json
  self.user = 'admin'
  self.password = 'admin'
  self.element_name = 'project'
  self.collection_name = 'projects'

end
Redmine正确地处理了文件的第一部分(事实上,如果我只是尝试RedmineProject.find(4)我的项目数据中确实有JSON),但是。。 我无法使用发布新成员身份

.post(:成员身份,:用户id=>12,:角色id=>4])

以下是我的应用程序控制台的结果:

ActiveResource::ServerError: Failed.  Response code = 500.  Response message = Internal Server Error .
    from /home/marc/.rvm/gems/ruby-1.9.3-p448/gems/activeresource-3.2.13/lib/active_resource/connection.rb:148:in `handle_response'
这是redmine终端的结果:

Started POST "/projects/4/memberships.json?role_ids%5B%5D=4&user_id=12" for 127.0.0.1 at 2013-10-24 21:32:41 +0200
Processing by MembersController#create as JSON
  Parameters: {"project"=>{"created_on"=>"2013-10-23T00:58:15Z", "description"=>"azfazfazf zaf azffza", "homepage"=>"", "id"=>4, "identifier"=>"team-35", "name"=>"azfazf", "updated_on"=>"2013-10-23T00:58:15Z"}, "role_ids"=>["4"], "user_id"=>"12", "project_id"=>"4"}
WARNING: Can't verify CSRF token authenticity
   (0.6ms)  SELECT MAX(`settings`.`updated_on`) AS max_id FROM `settings` 
  User Load (0.9ms)  SELECT `users`.* FROM `users` WHERE `users`.`type` IN ('User', 'AnonymousUser') AND `users`.`login` = 'admin'
  SQL (95.6ms)  UPDATE `users` SET `last_login_on` = '2013-10-24 21:32:41' WHERE `users`.`type` IN ('User', 'AnonymousUser') AND `users`.`id` = 1
  Current user: admin (id=1)
  Project Load (0.4ms)  SELECT `projects`.* FROM `projects` WHERE `projects`.`id` = 4 LIMIT 1
  EnabledModule Load (0.4ms)  SELECT name FROM `enabled_modules` WHERE `enabled_modules`.`project_id` = 4
Completed 500 Internal Server Error in 127ms

NoMethodError (undefined method `valid?' for nil:NilClass):
  app/controllers/members_controller.rb:70:in `block (2 levels) in create'
  app/controllers/members_controller.rb:65:in `create'

我的代码有问题吗?还是(不太可能)有错误?

我假设您使用的是Redmine v2.3

查看引发错误的位置,我看到
成员
是空数组! 查看构建
成员的过程
我可以假设
params[:membership]
为空,请查看您的日志:

{"project"=>{"created_on"=>"2013-10-23T00:58:15Z", "description"=>"azfazfazf zaf azffza", "homepage"=>"", "id"=>4, "identifier"=>"team-35", "name"=>"azfazf", "updated_on"=>"2013-10-23T00:58:15Z"}, "role_ids"=>["4"], "user_id"=>"12", "project_id"=>"4"}
尝试更改发送参数以将其包装为
成员身份
。 类似的内容在

我认为这应该行得通

.post(:memberships,:membership => {:user_id => 12, :role_ids => [4]})

您好,非常感谢您的帮助@gotva,唯一的一件事是我需要在param:membership(无S)中包含,因此我们有:
.post(:memberships,:memberships=>{:user\u id=>12,:role\u id=>[4]})
非常感谢,没有您我无法做到:)
{
  "membership":
  {
    "user_id": 27,
    "role_ids": [ 2 ]
  }
}
.post(:memberships,:membership => {:user_id => 12, :role_ids => [4]})