我在Redmine中使用ActiveResource时出错404

时间:2013-08-22 15:00:41

标签: redmine activeresource

我遇到了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!

你能帮帮我吗?我尝试过很多东西,但并不是每件事都行不通。谢谢你的回答!

1 个答案:

答案 0 :(得分: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中的演示代码可以创建一个问题,对我来说不起作用。