0

我有 redmine 的问题。事实上,我创建了一个使用 ActiveResource 的模型:

require 'active_resource'

class New < ActiveResource::Base
  #self.site = "http://localhost:3000/"
  #self.format = :xml
  #self.user = 'admin'
  #self.password = 'admin'

  class << self
    attr_accessor :api_key
  end

    def save
      prefix_options[:api_key] = self.class.api_key
    super
    end
end


New.site = 'http://localhost:3000'

New.api_key = '471bea6d1c4452b82b57287a281ff04392ae4118'

nw = New.new(:field_1 => 'value 1')
nw.save


# Retrieving news
news = New.find(:all)
puts news.first.title


#Retrieving an new
new = New.find(1)
puts new.description
puts new.author.name

# Creating an new
new = New.new(
:project_id => 1,
:author_id => 1,
:title => 'Annonce',
:summary => 'Annonce',
:description => 'Annonce'
)
if new.save
  puts new.id
else
  puts new.errors.full_messages
end

# Updating an 'new'
new = New.find(1)
new.title = 'NEW INFO '
new.save

# Deleting an new
new = New.find(1)
new.destroy

我有一个错误 404,我不明白为什么:

/Users/bj/.rvm/gems/ruby-1.9.3-p429/gems/activeresource-4.0.0/lib/active_resource/connection.rb:144:in `handle_response': Failed.  Response code =404.  Response message = Not Found . (ActiveResource::ResourceNotFound)

PS:如果我使用 api 密钥或者如果我使用 self.site 我也有 404 !

你能帮我吗?我尝试了很多东西,但不是所有的东西都不起作用。感谢您的回答!

4

1 回答 1

1

基本问题似乎是,Redmine 没有按照 ActiveResource 期望的方式响应。这可能是由于 Rails 3 中的更改,尚未在 Redmine 中正确反映。

对您而言,最好的选择可能是放弃 ActiveResource 之类的httparty。您还应该知道,Redmine 目前仅支持获取所有新闻(/news.json)和项目内的所有新闻(/projects/test_project/news.json)。REST API 既不支持直接获取单个新闻,也不支持创建或更新新闻。

编辑:代码中出现 404 的实际原因是因为 ActiveResource 尝试 POST 到 /news.json,正如我上面提到的,REST API 不支持。如果删除save调用,您将遇到另一个问题,即 ActiveResource 无法反序列化New.find(:all). 这让我想到,Redmine 和 ActiveResource 目前是不兼容的。此外, Redmine wiki中用于创建问题的演示代码对我不起作用。

于 2013-08-23T06:23:49.477 回答