2016-08-11 4 views
0

ich eine form_tag Form haben (new.html.erb), die wie folgt aussieht:kann nicht für Schienen form_tag Formwert in params passieren

<% provide(:title, "Initiate a Transaction") %> 
 
<h1>New Transaction</h1> 
 
<div class="row"> 
 
    <div class="col-md-6 col-md-offset-3"> 
 
    <%= form_tag '/fund_orders' do %> 
 
     <div class="field"> 
 
     <%= label_tag :investment_type, "Transaction Type" %> 
 
     <%= select_tag :investment_type, options_from_collection_for_select(@investment_type, 'id', 'transaction_type'), prompt: "--Select--" %> 
 
     </div> 
 
     <% @orders.each_with_index do |fund_order, index| %> 
 
     <% fieldname = 'fund_orders' + '[' + index.to_s + ']' %> 
 
     <%= fields_for fieldname, fund_order do |f| %> 
 
      <%= render 'fund_order_details', fund_order: f %> 
 
     <% end %> 
 
     <% end %> 
 
     <div class="actions"> 
 
     <%= submit_tag "Initiate Transaction", class: "btn btn-primary" %> 
 
     </div> 
 
    <% end %> 
 
    </div> 
 
</div>

ich mehrere neue zu schaffen versuche Transaktionen über dieses Formular. Das Codeteil innerhalb des Blocks @orders.each_with_index ist der Teil, der für die Formularfelder für Transaktionen zuständig ist. Allerdings - Sie werden feststellen, dass ich ein select_tag an der Spitze habe. Nach dem Absenden des Formulars - die Parameter werden mit den Daten für jede @Order aufgefüllt (wie in der Entwicklungskonsole angezeigt), aber es enthält params[:investment_type] nicht. Was läuft hier falsch?

Ich habe versucht, die @orders.each_with_index Block vollständig zu entfernen und selbst dann params[:investment_type] wird nicht übergeben. Gedanken?

Update: Ich habe die Ansicht oben aktualisiert. Auch - das ist die fund_order_details Teil, die aus der Sicht aufgerufen wird:

<fieldset> 
 
    <div class="field"> 
 
    <%= fund_order.label :fund_house, "Fund House" %> 
 
    <%= fund_order.collection_select(:fund_house, FundHouse.where(real_fund_house: true), :id, :fund_house, 
 
          {:prompt => "--Select--", :class => "fund_house"}, 
 
          {:data => {:remote => true, 
 
             :url => url_for(controller: "fund_orders", 
 
                 action: "update_fundnames") 
 
             }})%> 
 
    </div> 
 
    <div class="field"> 
 
    <%= fund_order.label :fund, "Fund Name" %> 
 
    <%= fund_order.collection_select(:fund, MutualFund.none, :id, :fund_name, 
 
           {:prompt => "--Select--", :class => "fund_name"})%> 
 
    </div> 
 
    <div class="field"> 
 
    <%= fund_order.label :amount %> 
 
    <%= fund_order.number_field(:amount, in: 1000..99999, step: 500) %> 
 
    </div> 
 
    <div class="field"> 
 
    <%= fund_order.label :start_date, "Starting date" %> 
 
    <%= fund_order.text_field :start_date, placeholder: "DD/MM/YYYY", required: true %> 
 
    </div> 
 
</fieldset>

@ taryn-Osten - hier ist das, was die HTML aussieht.

<div class="container"> 
 
     <h1>New Transaction</h1> 
 
<div class="row"> 
 
    <div class="col-md-6 col-md-offset-3"> 
 
    <form action="/fund_orders/" accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="✓"><input type="hidden" name="authenticity_token" value="HcHWLUTlLpMLMhgtdcFVumLvvD1DqmTdLvmr+Imm3Thlc+nZr0BqYjm30Gq9b+stemaylbIN83JpbEnL0cy3dg=="> 
 
     <div class="field"> 
 
     <label for="investment_type">Transaction Type</label> 
 
     <select name="investment_type" id="investment_type" disabled="disabled"><option value="">--Select--</option><option value="1">Purchase</option> 
 
<option value="2">Redeem</option> 
 
<option value="3">SIP</option> 
 
<option value="4">SWP</option> 
 
<option value="5">STP</option> 
 
<option value="6">Switch</option></select> 
 
     </div> 
 
     
 
      <fieldset style="display: block;"> 
 
    <div class="field"> 
 
    <label for="fund_orders_0_fund_house">Fund House</label> 
 
    <select data-remote="true" data-url="/update_fundnames" name="fund_orders[0][fund_house]" id="fund_orders_0_fund_house"><option value="">--Select--</option> 
 
<option value="1">ICICI</option> 
 
<option value="2">SBI</option> 
 
<option value="3">Axis</option> 
 
<option value="4">HDFC</option> 
 
<option value="5">Reliance</option></select> 
 
    </div> 
 
    <div class="field"> 
 
    <label for="fund_orders_0_fund">Fund Name</label> 
 
    <select name="fund_orders[0][fund]" id="fund_orders_0_fund"><option value="">--Select--</option> 
 
</select> 
 
    </div> 
 
    <div class="field"> 
 
    <label for="fund_orders_0_amount">Amount</label> 
 
    <input step="500" min="1000" max="99999" type="number" name="fund_orders[0][amount]" id="fund_orders_0_amount"> 
 
    </div> 
 
    <div class="field"> 
 
    <label for="fund_orders_0_start_date">Starting date</label> 
 
    <input placeholder="DD/MM/YYYY" required="required" type="text" name="fund_orders[0][start_date]" id="fund_orders_0_start_date"> 
 
    </div> 
 
</fieldset> 
 
     
 
      <fieldset style="display: none;"> 
 
    <div class="field"> 
 
    <label for="fund_orders_1_fund_house">Fund House</label> 
 
    <select data-remote="true" data-url="/update_fundnames" name="fund_orders[1][fund_house]" id="fund_orders_1_fund_house"><option value="">--Select--</option> 
 
<option value="1">ICICI</option> 
 
<option value="2">SBI</option> 
 
<option value="3">Axis</option> 
 
<option value="4">HDFC</option> 
 
<option value="5">Reliance</option></select> 
 
    </div> 
 
    <div class="field"> 
 
    <label for="fund_orders_1_fund">Fund Name</label> 
 
    <select name="fund_orders[1][fund]" id="fund_orders_1_fund"><option value="">--Select--</option> 
 
</select> 
 
    </div> 
 
    <div class="field"> 
 
    <label for="fund_orders_1_amount">Amount</label> 
 
    <input step="500" min="1000" max="99999" type="number" name="fund_orders[1][amount]" id="fund_orders_1_amount"> 
 
    </div> 
 
    <div class="field"> 
 
    <label for="fund_orders_1_start_date">Starting date</label> 
 
    <input placeholder="DD/MM/YYYY" required="required" type="text" name="fund_orders[1][start_date]" id="fund_orders_1_start_date"> 
 
    </div> 
 
</fieldset> 
 
     <div class="actions"> 
 
     <input type="submit" name="commit" value="Initiate Transaction" class="btn btn-primary"> 
 
     </div> 
 
</form> </div> 
 
</div> 
 

 
<footer></footer>

ich die Ansicht vereinfacht hatte - aber haben Sie die komplette HTML jetzt hinzugefügt.

auch - hier sind die Parameter auf die Serverprotokolle übergeben wird:

Parameters: {"utf8"=>"✓", "authenticity_token"=>"HcHWLUTlLpMLMhgtdcFVumLvvD1DqmTdLvmr+Imm3Thlc+nZr0BqYjm30Gq9b+stemaylbIN83JpbEnL0cy3dg==", "fund_orders"=>{"0"=>{"fund_house"=>"", "fund"=>"", "amount"=>"", "start_date"=>"10/08/2016"}, "1"=>{"fund_house"=>"", "fund"=>"", "amount"=>"", "start_date"=>"10/08/2016"}}, "commit"=>"Initiate Transaction"} 

Denn jetzt - ich versuche, nur die Ansicht richtig einzurichten und passieren alle params i an die Steuerung aus der Sicht brauchen . Ich habe noch keine starken Params Einstellungen in der Steuerung erforderlich. Bitte sehen Sie, ob das genug Details sind. Ich habe auch den HTML-Code von .html.erb oben bearbeitet, um zu zeigen, wie er in seiner Gesamtheit aussieht.

+0

Hallo und willkommen zu Stack Overflow! Können Sie bitte Ihre Frage bearbeiten und ein paar Dinge hinzufügen, die uns helfen könnten herauszufinden, was für Sie falsch läuft? Das Beste wäre, wenn Sie in Ihre Server-Protokolle schauen und uns als Beispiel für die Params angeben, die durchkommen. Manchmal kommt es auch zu einem Fehler (zB "unerlaubte Params") - haben Sie überprüft, dass das Feld in Ihrem Controller in Ihrer Erlaubnis/Anforderung enthalten ist? Es kann auch nützlich sein, wenn Sie uns das HTML zeigen können, das für Ihr Formular generiert wird ... wir können damit beginnen und sehen, wie es geht :) –

+0

@TarynEast - Ich habe die Frage mit weiteren Details aktualisiert. –

Antwort

0

aha, hat die html den Hinweis:

<select name="investment_type" id="investment_type" disabled="disabled"> 

Ihr Browser wird nicht durch irgendwelche Werte von einem deaktivierten Feld schicken ... so ... jetzt müssen Sie herausfinden, warum das Feld deaktiviert ist .

+1

Puh! Ich habe das Feld durch JS Post-Auswahl auf deaktiviert gesetzt. Ich habe zu wenig Reputationspunkte, um die Antwort zu verbessern - aber das funktionierte wie ein Zauber :) ... Danke Taryn. –

Verwandte Themen