gpt4 book ai didi

ruby-on-rails - 无法使用 Mailer 在 Rails 中发送链接

转载 作者:太空宇宙 更新时间:2023-11-03 17:54:18 25 4
gpt4 key购买 nike

我有一个应用程序可以发送包含注册链接的邀请电子邮件。但是注册链接报错。如果注册链接不存在,将发送电子邮件。

NoMethodError in Invitations#create
undefined method `accept_referral_invitation_url' for #(#(Class:0xadd8c90):0xb5d868cc)

错误发生在这一行

= accept_referral_invitation_url(@invitation.invite_token)

邀请 Controller

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

最佳答案

你可能在 config/routes.rb 中遗漏了这个

resources :invitations do
get 'accept_referral', :on => :collection
end

这将生成一个 GET 目标,如/invitations/accept_referral 将接受邀请,因此您可以这样做

accept_referral_invitations_url()

现在,要获取邀请码,请执行以下操作:

accept_referral_invitations_url(:invite_token => @invitation.invite_token)

这将导致像/invitations/accept_referral?invite_token=blahblahblah 这样的 URL

请注意,我在集合(而不是成员)上添加了 GET 目标,因此我不需要传递 @invitation 对象本身。而且,因为它是一个集合目标,所以您使用 invitations_url(复数)而不是 invitation_url。

希望对您有所帮助!

关于ruby-on-rails - 无法使用 Mailer 在 Rails 中发送链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17296684/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com