我遇到了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!
你能帮帮我吗?我尝试过很多东西,但并不是每件事都行不通。谢谢你的回答!答案 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中的演示代码可以创建一个问题,对我来说不起作用。