Es ist mein erster Versuch, den Rails Mailer zum Senden von E-Mails zu verwenden. Ich bin jedoch in der Lage, einfache E-Mails zu senden, aber wenn ich versuchte, den angemeldeten Benutzer (current_user) Namen und Parameter Werte über das Formular senden, bekomme ich den Fehler. Nicht definierte Methode 'params'.Rails mailer view template pass pass Wert durch ein Formular senden
payment_mailer.rb
class PaymentMailer < ApplicationMailer
def success(user)
mail(to: "#{user.first_name} #{user.last_name} <#{user.email}>", subject: "Payment Successful")
end
end
success.html.erb
<div class = "col-sm-12">
<h1>Payment Successful</h1>
<p>Dear <%= user.first_name %>, Thank you for being a part of our system<br>
Your invoice (#<%= params[:id] %>) has been generated.
</p>
</div>
<div class = "clearfix"></div>
<div class = "col-sm-6">
<table class = "table">
<thead>
<tr>
<th>Paid Ammount</th>
<th>Card Transaction Fee (2.9% + 0.30)</th>
<th>Credited Ammount</th>
</tr>
</thead>
<tbody>
<tr>
<td>€<%= params[:amount] %></td>
<td></td>
<td></td>
</tr>
</tbody>
<h3>Total credited amount in your Account is: </h3>
</table>
</div>
<div class = "clearfix"></div>
</div>
payment_controller.rb
amount = params[:amount]
@user = current_user
netamt = (amount.to_f - ((amount.to_f*2.9)/100 + 0.30))
payment = @user.payments.create(:amount => netamt, :method => "Card", :txn_code => params[:stripeToken])
@user.update_attribute(:balance, @user.balance+netamt)
PaymentMailer.success(current_user).deliver_now
Bitte leite mich.
'params verwenden 'ist nicht im Erfolgsmailer verfügbar. Sie können die "ID" und "Menge" aus Ihren Benutzer-Tabellenrelationen erhalten –
Wenn Sie die ID des Benutzers benötigen, dann verwenden Sie statt params [: id] user.id. Und wenn Sie ID von einer anderen Tabelle benötigen, übergeben Sie es in Parametern wie Sie bestanden current_user – Arif
Ich möchte die ID der Zahlungstabelle verwenden und tun user.first_name auch Fehler generiert. –