Я занимаюсь разработкой приложения на Rails 3 с большими объемами работы с таблицами. Я использую savon_model и ActiveModel для генерации поведения, аналогичного ActiveRecord эквивалентам. Ниже мой код:
class TestClass
include Savon::Model
include ActiveModel::Validations
# Configuration
endpoint "http://localhost:8080/app/TestService"
namespace "http://wsns.test.com/"
actions :getObjectById, :getAllObjects
attr_accessor :id, :name
def initialize(hash)
@id = hash[:id]
@name = hash[:name]
end
client do
http.headers["Pragma"] = "no-cache"
end
def self.all
h = getAllObjects(nil).to_array
return convert_array_hash_to_obj(h, :get_all_objects_response)
end
def self.find(id)
h = getObjectById(:arg0 => id).to_hash
return convert_hash_to_obj(h, :get_object_by_id_response)
end
private
def self.convert_array_hash_to_obj(arrayhash, returnlabel)
results = Array.new
arrayhash.each do |hash|
results << convert_hash_to_obj(hash, returnlabel)
end
return results
end
def self.convert_hash_to_obj(hash, returnlabel)
return TestClass.new(hash[returnlabel][:return])
end
end
ОК, все работает как положено; значения извлекаются из веб-службы и на страницу. К сожалению, когда я смотрю на HTML, созданный на стороне клиента, возникают некоторые проблемы. Ссылки Показать по следующим линиям:
/testclasses/%23%3CTestClass:0xa814cb4%3E
вместо ...
/testclasses/1
Итак, я сделал вывод объекта (хеш?) На консоль, чтобы сравнить выходные данные.
[#<System:0xa814cb4 @id="1", @name="CIS">]
вместо того, что я считаю, должно быть ...
[#<System id="1", name="CIS">]
У меня три вопроса:
1: Что такое шестнадцатеричный суффикс в имени моего класса, когда он распечатывается
2: Как я могу изменить свой класс, чтобы он соответствовал желаемому выводу при выводе на консоль?
3: Почему ссылки внешнего интерфейса (Показать, Изменить, Удалить) не работают и есть ли простое исправление?
Большое спасибо за ваше время и извинения за мусорный код / глупые вопросы. Это мое первое приложение на Ruby или Rails!
Gareth