Hello,

I took the ruby on rails example, and tried to add to it a view which is 
displaying the keywords from an AdGroup, I am able to get the keywords, and 
the total no of keywords from a campaign but I don't know why I can not 
display them in the view.

keyword model:

class Keyword
  attr_reader :id
  attr_reader :criteriaType
  attr_reader :keywordText

  def initialize(api_campaign)
    @id = api_campaign[:id]
    @criteriaType = api_campaign[:criteriaType]
    @keywordText = api_campaign[:keywordText]
  end

  def self.get_keywords_list(response)
    result = {}
    if response[:entries]
      response[:entries].each do |api_keyword|
        keyword = Keyword.new(api_keyword)
        result[keyword.id] = keyword
      end
    end
    return result
  end
end

keyword_controller
class KeywordController < ApplicationController

  PAGE_SIZE = 50

  def index()
    @selected_account = selected_account
    if @selected_account
      response = request_keywords_list('AdGroupID')
      if response
        @keywords = Keyword.get_keywords_list(response)
        @keyword_count = response[:total_num_entries]
      end
    end
  end

  private

  def request_keywords_list(ad_group_id)
   logger.debug ad_group_id
    api = get_adwords_api()
    service = api.service(:AdGroupCriterionService, get_api_version())
    selector = {
      :fields => ['Id', 'CriteriaType', 'KeywordText'],
      :ordering => [{:field => 'Id', :sort_order => 'ASCENDING'}],
      :predicates => [{:field => 'AdGroupId', :operator => 'EQUALS', 
:values => [ad_group_id]},
   {:field => 'CriteriaType', :operator => 'EQUALS', :values => 
['KEYWORD']}],
      :paging => {:start_index => 0, :number_results => PAGE_SIZE}
    }
    result = nil
    begin
      result = service.get(selector)
      logger.debug service.get(selector)
    rescue AdwordsApi::Errors::ApiException => e
      logger.fatal("Exception occurred: %s\n%s" % [e.to_s, e.message])
      flash.now[:alert] =
          'API request failed with an error, see logs for details'
    end
    return result
  end
end

keyword/index.html.erb

<h1>Keywords list</h1>

<% if @selected_account.nil? %>
  <div class="notice">No account selected!</div>

<% else %>

  <% if @keywords.nil? or @keywords.empty? %>
    <ul><li>No keywords available.</ul>
  <% else %>
    <ul><li>Total number of keywords: <%= @keyword_count %></ul>
    <table>
      <tr>
        <th>ID
        <th>KeywordText
        <th>CriteriaType
    <% @keywords.each do |id, keyword| %>
      <tr>
        <td><%= keyword.id %>
        <td><%= keyword.keywordText %>
        <td><%= keyword.criteriaType %>

    <% end %>
    </table>
  <% end %>


If someone can help me with some pointers, I'll be grateful.

So I discovered what I did wrong, 

def self.get_keywords_list(response)
    result = {}
    if response[:entries]
      response[:entries].each do |api_keyword|
        keyword = Keyword.new(api_keyword)
        result[keyword.id] = keyword
      end
    end
    return result
  end

In my response loop I need to have something like 
[keyword[:criterion][:id],
 keyword[:criterion][:type],
keyword[:criterion][:text]]

but I am such a noob, that I don't know how to implement that in my code.

Thank you

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rubyonrails-talk+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/c9fcfb49-342b-42c8-9c7d-f7313b81687d%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to