【发布时间】:2013-06-26 01:21:14
【问题描述】:
我有一个应用程序可以发送包含注册链接的邀请电子邮件。但是注册链接给出了错误。如果注册链接不存在,将发送电子邮件。
NoMethodError in Invitations#create
undefined method `accept_referral_invitation_url' for #(#(Class:0xadd8c90):0xb5d868cc)
错误发生在这一行
= accept_referral_invitation_url(@invitation.invite_token)
InvitationsController
class InvitationsController < ApplicationController
def new
@invitation = Invitation.new
end
def create
@invitation = current_user.invitations.new(params[:invitation])
if @invitation.valid?
@invitation.save
redirect_to root_url, :notice => "Invitation sent!"
UserMailer.invitation(@invitation).deliver
else
render "new", :notice => "Somehting went wrong!"
end
end
def accept_referral
@invitation = Invitation.find_by_invite_token(params[:invite_token])
@invitation.accepted_at = Time.zone.now
@invitation.save!
redirect_to root_url, :notice => "Success!"
end
end
用户邮件
class UserMailer < ActionMailer::Base
def invitation(invitation)
@invitation = invitation
mail(:to => invitation.email, :subject => "You're invited", :from => 'alain@lootfly.com')
end
end
invitation.html.haml(发送的消息)
You have been cordially invited to join beta.
Click this link to sign up!
= accept_referral_invitation_url(@invitation.invite_token)
= accept_referral_invitation_url(invite_token: @invitation.invite_token)
# I TRIED BOTH OF THOSE LINKS^^^^ TO NO AVAIL!!!!!!!
邀请模型
create_table "invitations", :force => true do |t|
t.integer "user_id"
t.text "email"
t.text "invite_token"
end
编辑:Rake 路线
invitations GET /invitations(.:format) invitations#index
POST /invitations(.:format) invitations#create
new_invitation GET /invitations/new(.:format) invitations#new
edit_invitation GET /invitations/:id/edit(.:format) invitations#edit
invitation GET /invitations/:id(.:format) invitations#show
PUT /invitations/:id(.:format) invitations#update
DELETE /invitations/:id(.:format) invitations#destroy
【问题讨论】:
-
请粘贴
rake routes的输出 -
在@invitation 上不调用 .invite_token 试试?
-
我很好奇错误消息中引用的
Invitations(复数,大写)对象。你知道那是从哪里来的吗?你愿意分享你的Invitation类定义吗? -
在没有 .invite_token 的情况下调用它不会改变任何东西@fabsays 和 -shime 我将 rake 路由的输出添加到 op。和 peter alfvin 在我的用户模型中它被称为.... class Invitation
-
我在@PeterAlfvin 和 shime 的帮助下得到了它。两者都设置在正确的路径上。你们两个都可以回答吗,这样我就可以勾选一个,另一个+1。谢谢!
标签: ruby-on-rails ruby ruby-on-rails-3