2017-04-18 2 views
0

Ich versuche, einen einfachen Gehaltsscheck Rechner zu erstellen. Ich habe die meisten der Variablen für die Berechnung wie folgt zugewiesen: @hours = params[:hours].to_i Ich habe ein Modell für die Staaten und erstellt eine Dropdown-Box mit: <%= collection_select(:state, :abbr, State.all, :abbr, :abbr) %> Dies scheint zu arbeiten, wie ich will. Das Problem, das ich habe, ist das Zuweisen des ausgewählten Zustands zu einer Variablen. Unten ist die debug (params):Ruby on Rails zuweisen Variable von verschachtelten Params

--- !ruby/object:ActionController::Parameters 
parameters: !ruby/hash:ActiveSupport::HashWithIndifferentAccess 
    utf8: "✓" 
    hours: '80' 
    rate: '15' 
    allowances: '1' 
    marital_status: S 
    pay_period: '1' 
    state: !ruby/hash:ActiveSupport::HashWithIndifferentAccess 
    abbr: AL 
    commit: Submit 
    controller: calc_page 
    action: home 
permitted: false 

Ich weiß nicht, ob dies ein Fehler in der Syntax ist oder ich völlig etwas fehle. Ich habe versucht: @state = params[:state["abbr"]] @state = params[:state]["abbr"] unter vielen anderen.

Jede Beratung oder Anleitung wird geschätzt oder wenn ich mehr Informationen bereitstellen muss.

Danke.

+3

'params [: state] [: abbr]' sollte funktionieren – Iceman

+0

könnten Sie den oberen Teil des Protokolls für diese Aktion hinzufügen, wo Anfrage/Parameter angezeigt werden? – Bohdan

+0

'@state = params [: state] [" abbr "]' sollte auch funktionieren, da sie Hashes mit indifferentem Zugriff sind. – sevenseacat

Antwort

3

Wenn Sie benötigen alle verschachtelten params zuzugreifen, zum Beispiel

a: 
b: 
    c: "hello" 

dann params [: a] [b] [c] geben Sie Ausgang "Hallo".

In Ihrem Fall params [: Zustand] [: abbr] wird die Arbeit tun.