undefined method `with_indifferent_access' for "":String

Hi

I'm having a issue with one object when try to update the attributes in this object previously saved in the database

I have one object comp and one object reg they have this relationship

comp

has_many regs

reg

belongs_to comp

when run use the method valid? like this

  current_contribuyente.comps.build(params[:comp]).valid?

it returns: IndexError (string not matched)

And when I try to update directly the comp directly it return this error: @comp = current_contribuyente.comps.find(params[:id])

@comp.update_attributes(params[:comp])

NoMethodError (undefined method `with_indifferent_access' for "":String):

This is the code from the view where I create this elements

= form_for @comp, :html => {:id => "new_form", :onsubmit => "return validate_form()"}, :remote => true do |f|

= f.fields_for :comprobante_emis_regs_attributes do |cer|               = cer.collection_select :reg_fil, current_contribuyente.contribuyente_regs, :reg_fil, :reg_fil, {:include_blank => false}, :class => 'reg_fil', :name => "comp[comp_emis_regs_attributes][0][reg_fil]"

Somebody has run into this issue i'm really running out of ideas of how to fix this.

Hi

I'm having a issue with one object when try to update the attributes in this object previously saved in the database

I have one object comp and one object reg they have this relationship

comp

has_many regs

reg

belongs_to comp

when run use the method valid? like this

  current_contribuyente.comps.build(params[:comp]).valid?

What is current_contribuyente?

Colin

Colin Law wrote in post #1072606:

What is current_contribuyente?

Colin

current_contribuyente is a method that works similar to current_user work like these:

def current_contribuyente   current_user.contribuyente end

it just a custom current_user that retrieves a model (contribuyente) for the current_user

contribuente has_many :comps

arturo drlt wrote in post #1072587:

Peter p. wrote in post #1072655:

arturo drlt wrote in post #1072587:

******************************************************************** Hi arturo drlt,

Try without "fields_for" It really works! :wink:

Regards, Peter ******************************************************************

I always had troubles writing the code for this model using only collection_select

so far i have this code:

- if comp_exist               = collection_select(:comp, :comp_emis_regs_reg_fil, current_contribuyente.contribuyente_regs, :reg_fil, :reg_fil, {:include_blank => false})             - else               = collection_select(:contribuyente, :contribuyente_regs_reg_fil, current_contribuyente.contribuyente_regs, :reg_fil, :reg_fil, {:include_blank => false}, {:class => 'reg_fil', :name => "comp[comp_emis_regs_attributes][0][reg_fil]"})

and the first collection_select return this error undefined method `comp_emis_regs[0].reg_fil' for #<Comp:0x7f90f655ca38>

because the method :comp_emis_regs_reg_fil its really one array and i don't know how to specify the method for the reg_fil attribute inside :comp_emis_regs because the relationship is has_many, some ideas?

Sorry i wrote a wrong error the collection_select return this error

undefined method `comprobante_emis_regs_reg_fil' for #<Comp:0x7f90f6298ae0>

collection_select(:comp, :comp_emis_regs_regimen_fiscal, current_contribuyente.contribuyente_regs, :reg_fil, :reg_fil, {:include_blank => false})

UPDATE

code:

collection_select(:comp, :comp_emi_reg_ids, CompEmiReg.where("comp_id = ?", @comp.id), :id, :reg_fil, {:include_blank => false})

return this error

NoMethodError (undefined method `with_indifferent_access' for "":String):

and this code:

collection_select(:comp, :comp_emi_reg_ids, CompEmiReg.where("comp_id = ?", @comp.id), :reg_fil, :regi_fil, {:include_blank => false})

return this error: ActiveRecord::RecordNotFound (Couldn't find CompEmiReg with ID=0):

I tried to do this

collection_select(:comp, :comp_emi_reg_regs_fils, CompEmiReg.where("comp_id = ?", @comp.id), :reg_fil, :regi_fil, {:include_blank => false})

but it don't wokrs it returns:

NoMethodError: undefined method `comp_emi_reg_regs_fils' for #<Comp:0x7ffd398b58d8>

it seems that in the param of method for collection I only can send the attribute id in plural other fields just return NoMethodError, I don't know what I'm doing wrong at the end always end up with NoMethodError (undefined method `with_indifferent_access' for "":String):

somebody knows another way to do this or knows if in the param method it only can receive ids for this kind of relationship?