hi
I'm creating an template for an html email. My own helper method 'format_price' is not accepted, but it works in some other templates.
application_helper.rb:
# Methods added to this helper will be available to all templates in the application. module ApplicationHelper def format_price(amount) euro, cents = amount.divmod(100) sprintf("EUR %d,%02d" , euro, cents) end end
order_mailer.rb:
class OrderMailer < ActionMailer::Base def confirmation(order) @subject = '' @body = { :order => order } @recipients = order.customer.email @from = "my_email@gmx.net" @sent_on = Time.now @headers = {} end end
private method in the controller:
def confirm_order(order) email = OrderMailer.create_confirmation(order) # line 185 email.set_content_type("text/html") render(:text => "<pre>" + email.encoded + "</pre>" ) end
the error message:
NoMethodError in Cart_and_orders#new_order Showing app/views/order_mailer/confirmation.rhtml where line #23 raised:
undefined method `format_price' for #<ActionView::Base:0x47ca250>
Extracted source (around line #23):
20: <td><%= order_item.times %>×</td> 21: <td><%= h(order_item.product.title) %></td> 22: <td></td> 23: <td align="right"><%= format_price(order_item.product.price) %></td> 24: <td align="right"><%= format_price(order_item.product.price * order_item.times) %></td> 25: </tr> 26: <% end %>
RAILS_ROOT: ./script/../config/..
Application Trace | Framework Trace | Full Trace #{RAILS_ROOT}/app/views/order_mailer/confirmation.rhtml:23:in `_run_rhtml_47app47views47order_mailer47confirmation46rhtml' #{RAILS_ROOT}/app/views/order_mailer/confirmation.rhtml:18:in `_run_rhtml_47app47views47order_mailer47confirmation46rhtml' #{RAILS_ROOT}/app/controllers/cart_and_orders_controller.rb:185:in `confirm_order' #{RAILS_ROOT}/app/controllers/cart_and_orders_controller.rb:155:in `new_order' #{RAILS_ROOT}/app/controllers/cart_and_orders_controller.rb:151:in `new_order'