to_xml and the :include option

Hi all

I'm having the following setup

Table: customerarticles belongs_to: article foreign_key: article_id

Table: articles has_many: customerarticles

Now I'm doing a search on the table articles and I'm returning the result using the to_xml() function. If I specifiy to include the respective customerarticle I get the following message:

"You have a nil object when you didn't expect it! The error occurred while evaluating nil.macro"

What am I missing? Any help?

Regarts tk

Hi all

I'm having the following setup

Table: customerarticles belongs_to: article foreign_key: article_id

Table: articles has_many: customerarticles

Now I'm doing a search on the table articles and I'm returning the result using the to_xml() function. If I specifiy to include the respective customerarticle I get the following message:

"You have a nil object when you didn't expect it! The error occurred while evaluating nil.macro"

What am I missing? Any help?

What are you passing to :include? It has to be the association name
(ie :customerarticles if your model says has_many :customerarticles)

Fred

Actually as I'm searching through the customerarticles table I'm using :article. Isn't that correct from that side?

Can you show us the code that's not working as you would expect?

Jeff

Well yes.

Here is the customerarticles controller:

class Customerarticles < ActiveRecord::Base   belongs_to :article end

Here is the article controller:

class Articles < ActiveRecord::Base    has_many :customerarticles end

And here is the XML output:

  #Searching customer specific articles   def searchCustomerarticles

    @result = Customerarticles.find(:all, :conditions => ["CUSTOMER_ID like ?" , params[:customer][:id]])

    respond_to do |format|       if(@result.length>0)         format.xml { render :partial => "shared/ actionResult", :locals => { :resultCode => "200", :database => @result.to_xml(:skip_instruct => true, :include => [ :article ])}}       else         format.xml {render :partial => "shared/actionResult", :locals => { :resultCode => "204" }}       end     end   end

Well yes.

Here is the customerarticles controller:

class Customerarticles < ActiveRecord::Base belongs_to :article end

Here is the article controller:

class Articles < ActiveRecord::Base has_many :customerarticles end

It's quite possible getting confused because you're messing up the conventions

1) class names should be singular 2) what's after the belongs_to (:article) should match up with the class name (but you've got Article).

Fred

Fantastic, thanks. As you see I'm just really a beginner in rails. It works like a charm now.

Thierry