Rails & FreeagentCentral API Использование - PullRequest
2 голосов
/ 19 октября 2010

У меня есть приложение rails, которое использует FreeagentCentral API для создания новых проектов в FreeagentCentral, когда в моем приложении создается новый случай.

После создания заявки я создаю ссылку на созданный проект в 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. Если бы я затем создал 3 счета-фактуры в FreeagentCentral в рамках этого проекта, эти 3 счета-фактуры были бы перечислены в представлении case case моего приложения.

Я использую гем FreeagentCentral API, созданный Аароном Расселом:

http://github.com/aaronrussell/freeagent_api

Я сделал то, что, как я понимаю, необходимо, добавив следующее в мой kases_controller.rb файл в разделе show:

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])

Кроме того, как только вышеприведенное является правильным - как мне перечислить все счета, найденные в этом проекте, в моем представлении показа?

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

С благодарностью будет получена любая помощь, которую кто-либо может оказать на это!

Спасибо,

Danny

1 Ответ

0 голосов
/ 19 октября 2010

Попробуйте это:

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

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

<% end %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...