2010-10-19 11 views
2

J'ai une application rails qui utilise l'API FreeagentCentral pour créer de nouveaux projets dans FreeagentCentral lorsqu'un nouveau cas est créé dans mon application.Utilisation de l'API Rails & FreeagentCentral

Une fois que le cas a été créé, je lie au projet créé en FreeagentCentral utilisant le code de lien suivant:

<%= link_to "#{image_tag('/images/icons/freeagent.png')} Freeagent Project", "#{Freeagent::Base.site}#{Freeagent::Project.element_path(@kase.freeagent_id).gsub!(/.xml/,'')}" if @kase.freeagent_id %> 

Ce que je voudrais faire, est afficher une liste des factures qui ont été créés dans FreeagentCentral dans le cadre du projet - dans ma demande. Ainsi, par exemple, si je crée un cas dans mon application, il sera alors créé en tant que projet dans FreeagentCentral. Si j'ai ensuite créé 3 factures dans FreeagentCentral dans le cadre de ce projet, les 3 factures seraient listées dans la vue de présentation de mon application.

J'utilise un petit bijou de l'API FreeagentCentral faite par Aaron Russell:

http://github.com/aaronrussell/freeagent_api 

Je l'ai fait ce que je crois être nécessaire, ce qui est ajouté ce qui suit à mon dossier kases_controller.rb dans la section show:

def show 
@kase = Kase.find(params[:id]) 
@invoice = Invoice.find(params[:freeagent_id]) 

Je ne sais pas si c'est exact, ou si elle en fait:

def show 
@kase = Kase.find(params[:id]) 
@kase = Invoice.find(params[:freeagent_id]) 

Aussi, une fois que ce qui précède est correct - comment puis-je lister toutes les factures trouvées dans ce projet dans ma vue de spectacle?

<% for invoice in @kases %> 
    <li><%= link_to ??, kase %></li> 
<% end %> 

Si elle aide, c'est le code que j'utilise de kase.rb pour envoyer le cas FreeagentCentral comme projet:

# FreeAgent API Project Create 
    # Required attribues 
    # :contact_id 
    # :name 
    # :billing_basis     # must be 1, 7, 7.5, or 8 
    # :budget_units      # must be Hours, Days, or Monetary 
    # :status       # must be Active or Completed 
    def create_freeagent_project(current_user) 
    contact = Freeagent::Contact.find_by_name(company.companyname) 
    p = Freeagent::Project.create(
     :contact_id    => contact.id, 
     :name     => "#{jobno} - #{highrisesubject}", 
     :billing_basis   => 1, 
     :budget_units   => 'Hours', 
     :status     => 'Active' 
    ) 
    user = Freeagent::User.find_by_email(current_user.email) 
    Freeagent::Timeslip.create(
     :project_id => p.id, 
     :user_id => user.id, 
     :hours => 1, 
     :new_task => 'Setup', 
     :dated_on => Time.now 
    ) 
    Freeagent::Task.create(:project_id => p.id, :name => 'Telephone Discussions') 
    Freeagent::Task.create(:project_id => p.id, :name => 'Investigation') 
    Freeagent::Task.create(:project_id => p.id, :name => 'Travel') 
    Freeagent::Task.create(:project_id => p.id, :name => 'Survey') 
    Freeagent::Task.create(:project_id => p.id, :name => 'Correspondence') 
    Freeagent::Task.create(:project_id => p.id, :name => 'Report') 
    Freeagent::Task.create(:project_id => p.id, :name => 'Claim Assessment') 
    self.freeagent_id = p.id 
    self.save 
    end 

Toute aide quelqu'un pouvait jeter sur ce serait reçue avec reconnaissance!

Merci,

Danny

Répondre

0

Essayez que:

@kase = Kase.includes(Invoice).where('Kases.id = ?, Invoices.id = ?', params[:id], params[:freeagent_id]) 

<% for @kase.invoices.each do |i| %> 

<% end %>