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.

On 16 August 2012 19:20, arturo drlt [email protected] wrote:

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 L. wrote in post #1072606:

On 16 August 2012 19:20, arturo drlt [email protected] wrote:

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

contribuyente has_many :comps

arturo drlt wrote in post #1072587:

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 arturo drlt,

Try without “fields_for”
It really works! :wink:

Regards,
Peter


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

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?

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?

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs