Ich versuche, eine Rails button_to zu verwenden, um eine neue Instanz in meiner Join-Tabelle zu erstellen.Erstellen einer neuen has_many durch Instanz mit button_to
Ich habe 4 Modelle (Hersteller, Chargen, Angebote und Großhändler) - Hersteller hat viele Chargen, Chargen has_many Angebote und has_many Großhändler durch Angebote. Großhändler hat viele Angebote und hat viele Lose durch Angebote.
Ich richte die 'neue Angebote' Ansicht innerhalb einer bestimmten Charge ein, um eine Liste aller Großhändler zu sein, so dass der Hersteller auf einen Knopf neben einem einzelnen Großhändler klicken kann, der ein neues 'Angebot' erstellen wird Charge und der spezifische Großhändler.
<%= button_to '+', {:controller => "offers", :action => "create", :wholesaler_id => wholesaler.id}, :method=>:post %>
meine Methode in der Angebote Controller erstellen:
def create
@offer = Offer.new(offer_params)
respond_to do |format|
if @offer.save
format.html { redirect_to @offer, notice: 'Offer was successfully created.' }
format.json { render :show, status: :created, location: @offer }
else
format.html { render :new }
format.json { render json: @offer.errors, status: :unprocessable_entity }
end
end
end
Meine offer_params Methode im Angebot Controller:
def offer_params
params.require(:offer).permit(:batch_id, :wholesaler_id, :amount, :accepted, :ignored)
end
Ich erhalte eine Fehlermeldung, wenn ich versuche, und klicken Sie auf das Add Taste -
ActionController::ParameterMissing in OffersController#create
param is missing or the value is empty: offer
bezieht sich auf die Methode offer_params.
Da ich das Angebot erst erstellt habe, nachdem ich auf den Button geklickt habe weiß ich nicht wie/wo ich darauf verweisen kann.
Vielen Dank für jede Hilfe - glücklich, jeden zusätzlichen Code zu posten, der bei der Beantwortung nützlich sein könnte.
Full 'neue' Ansicht:
<div id="wrapper">
<div id="unselected">
<h2> Wholesalers</h2>
<table>
<thead>
<tr>
<th> Wholesaler </th>
<th> Add</th>
</tr>
</thead>
<tbody>
<% @unselected_wholesalers.each do |wholesaler| %>
<tr>
<td><%=wholesaler.name %></td>
<td><%= button_to '+',
{:controller => "offers", :action => "create",
:wholesaler_id => wholesaler.id},
:method=>:post %></td>
</tr>
<% end %>
</tbody>
</table>
</div>
</div>
<%= link_to 'Back', manufacturer_batches_path(@manufacturer) %>
könnten Sie bitte 'offer' Form, die Ihr send mit Knopf befestigen? – idej
Ich bin mir nicht sicher, was Sie mit dem Angebotsformular meinen? Ich benutze keine Form teilweise, ich habe gerade den Code in der neuen Angebote Ansicht - Ich habe den vollständigen Code für diese Ansicht in meinem Beitrag –