2016-07-20 28 views
0

Ich verwende Rails 4.2.3. Ich habe die folgende Hilfsmethode US für das Erhalten Staaten ...In RoR, wie bekomme ich den Namen/die ID meines Objekts in meinem Auswahlmenü anstelle des Objekts selbst zu rendern?

def us_states 
    us_country = Country.find_by_iso('US') 
    State.where(country_id: us_country.id) 
    end 

Dann meiner Ansicht Ich habe

<%= addr.select :state, us_states.collect {|s| [ s.name, s.id ] }, {prompt: 'Select State'}, class: "selectField selectMenu form-control" %> 

Doch was meiner Ansicht gerendert wird

<select name="my_object[address][state]" id="my_object_address_state"><option value="">Select State</option> 
<option value="#<State:0x007f9f562fe368>">#&lt;State:0x007f9f562fe368&gt;</option> 
… 
<option value="#<State:0x007f9f563124a8>">#&lt;State:0x007f9f563124a8&gt;</option></select> 

ist, wie Ich mache die tatsächlichen Namen und IDs der Staaten in meinem Select-Tag erscheinen?

Antwort

0

Ihnen fehlt options_for_select, Ändern Sie Ihre Auswahl mit diesem:

<%= addr.select :state, options_for_select(us_states.collect{|s| [ s.name, s.id ]}), {prompt: 'Select State'}, class: "selectField selectMenu form-control" %> 
0

Als ich das ich eine Methode zu schaffen, wie zu tun haben, als „display_name“

<%= addr.select :state, us_states.collect {|s| [ s.display_name, s.id ] }, {prompt: 'Select State'}, class: "selectField selectMenu form-control" %> 

jetzt in Ihrem Modell können Sie tun:

class Model < ActiveRecord::Base 
    ... 
    def display_name 
    name.to_s + ' ' + id.to_s 
    end 
    ... 
end 

Ich hoffe, dass dies hilft