2010-10-19 43 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 %>