使用 Devise_invitable 发送邀请时出错

问题描述 投票:0回答:1

我知道有一些关于此的主题,但是,从我所见,它们已经很旧了,可能已经过时了。

我正在使用 devise 和 devise_invitable。其背后的想法是允许管理员和教师邀请新用户(学生或教师)。但是,当我发送邀请时,出现以下错误:

Missing host to link to! Please provide the :host parameter, set default_url_options[:host], or set :only_path to true
Extracted source (around line #4):
2
3
4
5
6
7
              
            @virtual_path = "devise/mailer/invitation_instructions";; @output_buffer.safe_append='<p>'.freeze; @output_buffer.append=( t("devise.mailer.invitation_instructions.hello", email: @resource.email) ); @output_buffer.safe_append='</p>

<p>'.freeze; @output_buffer.append=( t("devise.mailer.invitation_instructions.someone_invited_you", url: root_url) ); @output_buffer.safe_append='</p>

<p>'.freeze; @output_buffer.append=( link_to t("devise.mailer.invitation_instructions.accept"), accept_invitation_url(@resource, invitation_token: @token) ); @output_buffer.safe_append='</p>

我尝试了很多不同的方法,现在这就是我的代码的样子:

邀请控制器

class Users::InvitationsController < Devise::InvitationsController

  def create
    super do |resource|
      if resource.persisted? && resource.role == "aluno"
        AlunoProfile.create(
          user: resource,
          morada: params[:user][:morada],
          birthdate: params[:user][:birthdate],
          nif: params[:user][:nif],
          numero_utente: params[:user][:numero_utente],
          cartao_cidadao: params[:user][:cartao_cidadao],
          validity: params[:user][:validity],
          contacto: params[:user][:contacto],
          encarregado_educação: params[:user][:encarregado_educação],
          grau_parentesco: params[:user][:grau_parentesco],
          contacto_emergencia: params[:user][:contacto_emergencia],
          aulas: params[:user][:aulas],
          horario_preferencial: params[:user][:horario_preferencial],
          recolha_dados: params[:user][:recolha_dados],
          fotografias_captadas: params[:user][:fotografias_captadas]
        )
      end
    end
  end

  private

  def set_params
    params.require(:user).permit(:email, :first_name, :last_name)
  end
end

邀请_说明视图

<p><%= t("devise.mailer.invitation_instructions.hello", email: @resource.email) %></p>

<p><%= t("devise.mailer.invitation_instructions.someone_invited_you", url: root_url) %></p>

<p><%= link_to t("devise.mailer.invitation_instructions.accept"), accept_invitation_url(@resource, invitation_token: @token) %></p>

<% if @resource.invitation_due_at %>
  <p><%= t("devise.mailer.invitation_instructions.accept_until", due_date: l(@resource.invitation_due_at, format: :'devise.mailer.invitation_instructions.accept_until_format')) %></p>
<% end %>

<p><%= t("devise.mailer.invitation_instructions.ignore") %></p>

我的路线

Rails.application.routes.draw do
  # devise_for :users
  devise_for :users, RegistrationsController: { registrations: 'registrations'}

  root to: "pages#home"

  get "about", to: "pages#about"
  get "school", to: "pages#school"
  get "today", to: "aulas#today"
  get "clientes", to: "user_aulas#clientes"

  resources :aluno_profiles
  resources :aulas do
    resources :bookings, only: %i[create destroy]
  end


  # Define your application routes per the DSL in https://guides.rubyonrails.org/routing.html

  # Reveal health status on /up that returns 200 if the app boots with no exceptions, otherwise 500.
  # Can be used by load balancers and uptime monitors to verify that the app is live.
  get "up" => "rails/health#show", as: :rails_health_check

  # Defines the root path route ("/")
  # root "posts#index"
end```

ruby-on-rails ruby ruby-on-rails-4 devise devise-invitable
1个回答
0
投票

您需要告诉 Ruby on Rails 您的应用程序正在运行的域,以允许在邮件程序视图中构建具有有效 URL 的链接。

config.action_mailer.default_url_options
文件中将
config/initializers/**.rb
设置为类似以下内容:

config.action_mailer.default_url_options = { host: "example.com" }

请参阅

ActionMailer::Base
文档

© www.soinside.com 2019 - 2024. All rights reserved.