2016-04-21 2 views
0
if @challenge.name == 'foo' 
    @challenge.category = 'habit' 
    @challenge.days_challenged = 21 
    @challenge.why = 'bar' 
else 

:days_challenged & :why für foo richtig im _form gesetzt wird, aber nicht :category.Standard Objektattribut säumige nicht für HTML

<div class="challenge-category"> 
    <input class="date-format-switcher" type="radio" value="goal" name="challenge[category]" id="challenge_category_goal"> 
    <label for="challenge_category_goal">Goal</label> 

    <input class="date-format-switcher" type="radio" value="habit" name="challenge[category]" id="challenge_category_habit"> 
    <label for="challenge_category_habit">Habit</label> 
    </div> 
    <%= f.number_field :days_challenged, class: 'day-challenge' %> 
    <%= f.text_area :why %> 
+0

Bitte zeigen Sie Ihre Controller-Methode und vollständigen Code – Ilya

Antwort

1

Ich nehme an, dass Sie Ihre Radioknöpfe absichtlich kundenspezifisch codieren. Das ausgewählte Optionsfeld sollte das Attribut „geprüft“, dh

<input class="date-format-switcher" type="radio" value="habit" 
    name="challenge[category]" id="challenge_category_habit" checked /> 

dynamisch einstellen:

<%= f.radio_button :category, 'goal', class: 'date-format-switcher' %> 
<%= f.radio_button :category, 'habit', class: 'date-format-switcher' %> 
+0

Ansicht, dass es immer auf „Gewohnheit“ default macht . Manchmal sind die vorgestellten Herausforderungen ein "Ziel", was bedeutet, dass überprüft werden muss –

+0

Ich weiß. Sie müssen es programmgesteuert auf checked setzen, wenn der Wert des Optionsfelds "@ challenge.category" entspricht. Rails hat einen Helfer 'f.radio_button', der das genauso macht wie die anderen Formularfelder. – GoGoCarl

+0

Siehe Bearbeiten oben. Das ergibt im Grunde den gleichen HTML-Code, aber lassen Sie uns Rails das Formular für Sie erstellen. – GoGoCarl