我尝试将一个对象(用户)发送到NotificationsMailer,如下所示:
pry(main)>NotificationsMailer.welcome_facebook_user({:password=>'123',:email=>'as453now@gmail.com',:basic_profile=>{:name=>'Samir'}}).deliver但是我得到了这个错误:
ActionView::Template::Error: undefined method `basic_profile' for #<Hash:0x0000000786d588>
from /app/app/views/notifications_mailer/welcome_facebook_user.html.haml:2:in `block in _app_views_notifications_mailer_welcome_facebook_user_html_haml__4104442834642741128_62933320'NotificationsMailer.welcome_facebook_user:
def welcome_facebook_user(user)
@user = user
puts "SENT welcome_facebook_user TO:"
puts user[:email]
mail(:to=>user[:email], :subject => "Welcome!")
end我的模板:
=content_for :title do
Welcome, #{@user.basic_profile.name unless @user.basic_profile.nil?}在现实世界中:
User.rb
class User < Refinery::Core::BaseModel
has_one :basic_profile但是,我想用pry来测试一下,如何发送这样的用户对象呢?为什么我的尝试失败了?
发布于 2013-05-06 19:20:06
您正在使用散列,但您应该使用对象来创建对象(我假设默认情况下关闭了批量分配):
basic_profile = BasicProfile.new
basic_profile.name = 'Samir'
user = User.new
user.password = '123'
user.email = 'aba@gmail.com'
user.basic_profile = basic_profile
NotificationsMailer.welcome_facebook_user(user).deliver或者关闭质量指定并执行以下操作
NotificationsMailer.welcome_facebook_user(User.new({:password=>'123',:email=>'as453now@gmail.com',:basic_profile=>BasicProfile.new({:name=>'Samir'})})).deliver发布于 2013-05-06 18:35:42
尝尝这个
> @user = User.create!(password: "123", email: "abc@example.com")
> @user.basic_profile.name = "Samir"
> NotificationsMailer.welcome_facebook_user(@user).deliverhttps://stackoverflow.com/questions/16396744
复制相似问题