2016-11-07 2 views
0

Ich bin neu in Formulare in Rails, so dass dies eine sehr grundlegende Frage sein kann.Schienen Formular Beispiel

Ich habe eine HTML-Seite, die ich in eine Grundform drehen möchte:

<div class="container"> 
    <div class="row"> 
     <div class="col-sm-12"> 
      <h2>What is your age?</h2> 
      <input type="number" id="age"><br> 
     </div> 
     <div class="col-sm-12"> 
      <h2>What is your zip code?</h2> 
      <input type="number" id="zip"><br> 
     </div> 
     <div class="col-sm-12"> 
      <h2>What is your gender?</h2> 
      <select id="gender"> 
       <option></option> 
       <option value="42198">Male</option> 
       <option value="42199">Female</option> 
      </select> 
     </div> 
     <div class="col-sm-12"> 
      <h2>Are you of Hispanic, Latino, or Spanish origin?</h2> 
      <select id="hispanic"> 
       <option></option> 
       <option value="42200">No , not of Hispanic, Latino, or Spanish origin</option> 
       <option value="42201">Yes, Mexican, Mexican American, Chicano</option> 
       <option value="42202">Yes, Cuban</option> 
       <option value="42203">Yes, another Hispanic, Latino, or Spanish origin *** Argentina</option> 
       <option value="42204">Yes, another Hispanic, Latino, or Spanish origin *** Colombia</option> 
       <option value="42205">Yes, another Hispanic, Latino, or Spanish origin *** Ecuador</option> 
       <option value="42206">Yes, another Hispanic, Latino, or Spanish origin *** El Salvadore</option> 
       <option value="42207">Yes, another Hispanic, Latino, or Spanish origin *** Guatemala</option> 
       <option value="42208">Yes, another Hispanic, Latino, or Spanish origin *** Nicaragua</option> 
       <option value="42209">Yes, another Hispanic, Latino, or Spanish origin *** Panama</option> 
       <option value="42210">Yes, another Hispanic, Latino, or Spanish origin *** Peru</option> 
       <option value="42211">Yes, another Hispanic, Latino, or Spanish origin *** Spain</option> 
       <option value="42212">Yes, another Hispanic, Latino, or Spanish origin *** Venezuela</option> 
       <option value="42213">Yes, another Hispanic, Latino, or Spanish origin *** Other Country</option> 
       <option value="42214">Prefer not to answer</option> 
      </select> 
     </div> 
     <div class="col-sm-12"> 
      <h2>What is your race?</h2> 
      <select id="ethnicity"> 
       <option></option> 
       <option value="42215">White</option> 
       <option value="42216">Black, or African American</option> 
       <option value="42217">American Indian or Alaska Native</option> 
       <option value="42218">Asian *** Asian Indian</option> 
       <option value="42219">Asian *** Chinese</option> 
       <option value="42220">Asian *** Filipino</option> 
       <option value="42221">Asian *** Japanese</option> 
       <option value="42222">Asian *** Korean</option> 
       <option value="42223">Asian *** Vietnamese</option> 
       <option value="42224">Asian *** Other</option> 
       <option value="42225">Pacific Islander *** Native Hawaiian</option> 
       <option value="42226">Pacific Islander *** Guamanian</option> 
       <option value="42227">Pacific Islander *** Samoan</option> 
       <option value="42228">Pacific Islander *** Other Pacific Islander</option> 
       <option value="42229">Some other race</option> 
       <option value="42230">Prefer not to answer</option> 
      </select> 
     </div> 
     <div class="col-sm-12"> 
      <h2>What is your relationship status?</h2> 
      <select id="standard_relationship"> 
       <option></option> 
       <option value="42231">Single, never married</option> 
       <option value="42232">Married</option> 
       <option value="42233">Separated, divorced or widowed</option> 
       <option value="42234">Domestic partnership/living with someone</option> 
       <option value="42235">Prefer not to answer</option> 
      </select> 
     </div> 
     <div class="col-sm-12"> 
      <h2>What is the highest level of education you have completed?</h2> 
      <select id="standard_education"> 
       <option></option> 
       <option value="42236">3rd Grade or less</option> 
       <option value="42237">Middle School - Grades 4 - 8</option> 
       <option value="42238">Completed some high school</option> 
       <option value="42239">High school graduate</option> 
       <option value="42240">Other post high school vocational training</option> 
       <option value="42241">Completed some college, but no degree</option> 
       <option value="42242">Associate Degree</option> 
       <option value="42243">College Degree (such as B.A., B.S.)</option> 
       <option value="42244">Completed some graduate, but no degree</option> 
       <option value="42245">Masters degree</option> 
       <option value="42246">Doctorate degree</option> 
       <option value="42247">None of the above</option> 
      </select> 
      <h2>How much total combined income do all members of your household earn before taxes?</h2> 
     </div> 
     <div class="col-sm-12"> 
      <select id="standard_hhi_us"> 
       <option></option> 
       <option value="43490">Less than $5,000</option> 
       <option value="43491">$5,000 to $9,999</option> 
       <option value="43492">$10,000 to $14,999</option> 
       <option value="43493">$15,000 to $19,999</option> 
       <option value="43494">$20,000 to $24,999</option> 
       <option value="43495">$25,000 to $29,999</option> 
       <option value="43496">$30,000 to $34,999</option> 
       <option value="43497">$35,000 to $39,999</option> 
       <option value="43498">$40,000 to $44,999</option> 
       <option value="43499">$45,000 to $49,999</option> 
       <option value="43500">$50,000 to $54,999</option> 
       <option value="43501">$55,000 to $59,999</option> 
       <option value="43502">$60,000 to $64,999</option> 
       <option value="43503">$65,000 to $69,999</option> 
       <option value="43504">$70,000 to $74,999</option> 
       <option value="43505">$75,000 to $79,999</option> 
       <option value="43506">$80,000 to $84,999</option> 
       <option value="43507">$85,000 to $89,999</option> 
       <option value="43508">$90,000 to $94,999</option> 
       <option value="43509">$95,000 to $99,999</option> 
       <option value="43510">$100,000 to $124,999</option> 
       <option value="43511">$125,000 to $149,999</option> 
       <option value="43512">$150,000 to $174,999</option> 
       <option value="43513">$175,000 to $199,999</option> 
       <option value="43514">$200,000 to $249,999</option> 
       <option value="43515">$250,000 and above</option> 
       <option value="43516">Prefer not to answer</option> 
      </select> 
     </div> 
    </div> 
</div> 

Grundsätzlich auf die <input type="submit"> Schaltfläche klicken, würde ich gerne ein POST mein

example#post_action

machen

In diesem Aufruf möchte ich die Werte aller meiner Felder übergeben.

So ist der #age numerische Wert und die Werte des ausgewählten Drop-Down, so #gender könnten einen Wert von 42198, wenn Malen ausgewählt, usw.

Was den am besten geeigneten Weg, um diese Art von Form zu definieren, in Schienen? Wenn dies nicht für einen bestimmten Benutzer gilt, kann ich hier keinen form_for Aufruf ausführen, da diese Werte nicht direkt in Spalten gespeichert werden.

EDIT:

eine form_tag hier verwenden Versuch, erhalte ich diese Antwort, die die Eingänge/Dropdown-Listen fehlt, die ausgefüllt sind:

Parameters: {"utf8"=>"✓", "authenticity_token"=>"WW9mpi6cdJhlR5nvUFGh95K1PKq1YyexC+SV14+0IAuAd5ZFTqAiOlD1+zFbT2X5RP5uiPiFQlT0VjG9PrOE4g==", "commit"=>"Save"} 
{"utf8"=>"✓", "authenticity_token"=>"WW9mpi6cdJhlR5nvUFGh95K1PKq1YyexC+SV14+0IAuAd5ZFTqAiOlD1+zFbT2X5RP5uiPiFQlT0VjG9PrOE4g==", "commit"=>"Save", "controller"=>"routers", "action"=>"pulley_post"} 

Aktualisiert Code:

<%= form_tag('/routers/pulley_post') do -%> 
    #above html code 
    <div><%= submit_tag 'Save' %></div> 
<% end -%> 
+0

Um die Antworten zu ergänzen, die Sie haben sollten, die Ihnen einen guten Anfang geben sollten, könnten Sie [Fo rm Helpers] (http://guides.rubyonrails.org/form_helpers.html) – David

Antwort

1

können Sie form_for verwenden und eine Hilfsmethode irgendwo verwenden auf application_helper.rb oder andere Helfer Moduloptionen für f.select

Vorlage

Form weitergeben müssen:

Methoden
<%= form_for @user, :url => { :action => "create" } do |f| %> 
    <label>age</label> 
    <%= f.text_field :age %> 
    <label>gender</label> 
    <%= f.select :gender, options_for_select(gender_options), { prompt: 'Select gender' } %> 
    <label>ethnicity</label> 
    <%= f.select :ethnicity, options_for_select(ethnicity_options), { prompt: 'Select ethnicity' } %> 
    <%= f.submit "Submit" %> 
<% end %> 

Helfer für die Optionen in der Form Auswahlfeld vorbei (application_helper.rb):

def gender_options 
    [ ["male", '42198'], ["female", '42199'] ] 
end 

def ethnicity_options 
    [ ["No, not of Hispanic, Latino or Spanish", '42200'], ["Yes, Mexican, Mexican American", '42201'] ] 
end 
1

Neben form_for gibt es auch form_tag für nicht-einfallsreiche Formulare (Formulare, die nicht an ein Rails-Modell gekoppelt sind).

+0

Das scheint also einen Anruf zu bekommen, aber es scheint keine der Eingänge/Dropdowns zu enthalten. Ich habe meinen Code und meine Antwort aktualisiert. –

Verwandte Themen