2010-10-19 38 views
2

我有一個Rails應用程序,它在我的應用程序中創建新案例時使用FreeagentCentral API在FreeagentCentral中創建新項目。Rails和FreeagentCentral API用法

一旦情況下被創建,我鏈接到使用下面的鏈接代碼FreeagentCentral創建項目:

<%= 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 %> 

我想什麼做的,是表明了在已創建的發票清單項目下的FreeagentCentral - 在我的應用程序中。例如,如果我在我的應用程序中創建了一個案例,那麼它將在FreeagentCentral中創建爲一個項目。如果我然後在該項目的FreeagentCentral中創建了3份發票,則3份發票將列在我的應用程序的案例展示視圖中。

我使用由亞倫·羅素做出了FreeagentCentral API寶石:

http://github.com/aaronrussell/freeagent_api 

我已經做了我的理解是必要的,這是添加了以下到下的顯示部分我kases_controller.rb文件:

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

我不知道,如果這是正確的,或者如果它其實應該是:

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

此外,一旦以上是正確的 - 如何列出在我的show view中找到的項目中的任何發票?

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

如果有幫助,這是我的代碼從kase.rb使用的情況下發送到FreeagentCentral作爲一個項目:

# 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 

任何幫助,任何人都可以闡明這會受到歡迎!

感謝,

丹尼

回答

0

試一下:

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

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

<% end %>