8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

使用 Devise_invitable 发送邀请时出错

abuzain 3月前

123 0

我知道有一些关于此问题的帖子,但从我看到的内容来看,它们相当老旧,可能已经过时了。我正在使用 devise 和 devise_invitable。其背后的想法是允许管理员和教师...

我知道有一些关于此问题的帖子,但是从我看到的内容来看,它们已经很旧了,可能已经过时了。

我正在使用 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

Invitation_instructions 视图

<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```

帖子版权声明 1、本帖标题:使用 Devise_invitable 发送邀请时出错
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由abuzain在本站《ruby》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 我使用带有 shopify gem(版本 9.0.2)的 ruby​​ 应用程序。一切都运行良好,直到最近,它突然无法解析我在 Heroku 上的 GraphQL 调用,但是当我在本地执行相同的过程时,它……

    我使用带有 shopify gem 的 ruby​​ 应用程序(版本 9.0.2)

    一切都运行良好,直到最近,它突然无法解析我在 Heroku 上的 GraphQL 调用

    但当我在本地执行相同的过程时,它有效

    例如,在两者上:-我正在使用凭证初始化 ShopifyAPI,api_version

    -我执行以下请求

    query_variables = {'gid' => gid}
        query_str = <<-'GRAPHQL'
          query($gid: ID!) {
            product(id: $gid) {
              id
            }
          }
        GRAPHQL
    

    - 之后我初始化客户端:

    client = ShopifyAPI::GraphQL.client

    • 然后我尝试解析 query_graph_ql = client.parse(query_str)

    在本地运行良好,但在 Heroku 上出现以下错误

    \'NoMethodError(nil:NilClass 未定义方法‘fields’)\'

    几个月前,它在 Heroku 上也运行良好

    它似乎来自 GraphQL 本身,但我不明白为什么会出现这个错误,就好像它没有在 Heroku 上正确初始化一样

    似乎不是链接到我的商店,因为我尝试过其他地方,我没有做任何更改,但仍然不起作用

    知道错误从何而来吗?

    我试过:在 Heroku 上进行 Shopify GraphQL 调用预期:接收我的数据结果:GraphQL 错误:NoMethodError(未定义方法“字段”为 nil:NilClass)

    编辑:我对 REST API 没有任何问题

    编辑2:rails控制台中的Backtrace(使用heroku run rails c):

    app/vendor/bundle/ruby/2.6.0/gems/graphql-client-0.19.0/lib/graphql/client/document_types.rb:62:in `rescue in analyze_types'
    /app/vendor/bundle/ruby/2.6.0/gems/graphql-client-0.19.0/lib/graphql/client/document_types.rb:45:in `analyze_types'
    /app/vendor/bundle/ruby/2.6.0/gems/graphql-client-0.19.0/lib/graphql/client.rb:189:in `parse'
    /app/lib/utilities/graphql.rb:29:in `query_shopify'
    /app/lib/utilities/graphql.rb:368:in `get_product_by_id'
    (irb):4:in `irb_binding'
    /app/vendor/ruby-2.6.6/lib/ruby/2.6.0/irb/workspace.rb:85:in `eval'
    /app/vendor/ruby-2.6.6/lib/ruby/2.6.0/irb/workspace.rb:85:in `evaluate'
    /app/vendor/ruby-2.6.6/lib/ruby/2.6.0/irb/context.rb:385:in `evaluate'
    /app/vendor/ruby-2.6.6/lib/ruby/2.6.0/irb.rb:493:in `block (2 levels) in eval_input'
    /app/vendor/ruby-2.6.6/lib/ruby/2.6.0/irb.rb:647:in `signal_status'
    /app/vendor/ruby-2.6.6/lib/ruby/2.6.0/irb.rb:490:in `block in eval_input'
    /app/vendor/ruby-2.6.6/lib/ruby/2.6.0/irb/ruby-lex.rb:246:in `block (2 levels) in each_top_level_statement'
    /app/vendor/ruby-2.6.6/lib/ruby/2.6.0/irb/ruby-lex.rb:232:in `loop'
    /app/vendor/ruby-2.6.6/lib/ruby/2.6.0/irb/ruby-lex.rb:232:in `block in each_top_level_statement'
    /app/vendor/ruby-2.6.6/lib/ruby/2.6.0/irb/ruby-lex.rb:231:in `catch'
    /app/vendor/ruby-2.6.6/lib/ruby/2.6.0/irb/ruby-lex.rb:231:in `each_top_level_statement'
    /app/vendor/ruby-2.6.6/lib/ruby/2.6.0/irb.rb:489:in `eval_input'
    /app/vendor/ruby-2.6.6/lib/ruby/2.6.0/irb.rb:428:in `block in run'
    /app/vendor/ruby-2.6.6/lib/ruby/2.6.0/irb.rb:427:in `catch'
    /app/vendor/ruby-2.6.6/lib/ruby/2.6.0/irb.rb:427:in `run'
    /app/vendor/ruby-2.6.6/lib/ruby/2.6.0/irb.rb:383:in `start'
    /app/vendor/bundle/ruby/2.6.0/gems/railties-5.2.8.1/lib/rails/commands/console/console_command.rb:64:in `start'
    /app/vendor/bundle/ruby/2.6.0/gems/railties-5.2.8.1/lib/rails/commands/console/console_command.rb:19:in `start'
    /app/vendor/bundle/ruby/2.6.0/gems/railties-5.2.8.1/lib/rails/commands/console/console_command.rb:96:in `perform'
    /app/vendor/bundle/ruby/2.6.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
    /app/vendor/bundle/ruby/2.6.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
    /app/vendor/bundle/ruby/2.6.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
    /app/vendor/bundle/ruby/2.6.0/gems/railties-5.2.8.1/lib/rails/command/base.rb:69:in `perform'
    /app/vendor/bundle/ruby/2.6.0/gems/railties-5.2.8.1/lib/rails/command.rb:46:in `invoke'
    /app/vendor/bundle/ruby/2.6.0/gems/railties-5.2.8.1/lib/rails/commands.rb:18:in `<top (required)>'
    /app/bin/rails:4:in `require'
    /app/bin/rails:4:in `<main>'
    
  • 不要复制每个哈希键,而是使用强参数 -

  • 您使用的 gem 版本已超过 4 年。此后已发布了几个较新的主版本。您是否考虑过更新

  • @spickermann 是的,我想更新到新版本,但我的应用程序非常大,需要做很多更改才能使其再次正常工作。 我开始这样做,但现在没有时间(我会在有空的时候继续我的工作)从错误来看,它似乎更多地出现在 GraphQL 方面/初始化上,如果是 gem 本身,我会假设 REST API 也不会工作(并且它在本地不会工作?)

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

    设置 config.action_mailer.default_url_options 为类似这样的内容 config/initializers/**.rb

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

    参见 the ActionMailer::Base docs

  • 您能提供错误的完整堆栈跟踪吗?

  • /15 * * * * /usr/bin/docker exec 439b5f929468 python3 /app/metrics.py 2>&1 | /usr/bin/timestamp.sh >> /var/log/dedl-stack/dedl_stack.log 我有一个每 15 分钟运行一次的 cronjob,如何......

    /15 * * * * /usr/bin/docker exec 439b5f929468 python3 /app/metrics.py 2>&1 | /usr/bin/timestamp.sh >> /var/log/dedl-stack/dedl_stack.log
    
    

    我有一个每 15 分钟运行一次的 cronjob,但是有时脚本中的某个功能会卡住,为这个作业实现超时的最干净的方法是什么?

    root@noc1(INTERNAL):/etc# ps aux | grep metrics
    root     1593181  0.0  0.0  12288     4 ?        Sl+  Apr08   0:00 vim metrics.py
    root     2506700  0.2  0.1 296684 63860 ?        Ssl  11:03   0:00 python3 /app/metrics.py
    root     2506842  0.3  0.1 296684 63748 ?        Ssl  11:06   0:00 python3 /app/metrics.py
    root     2506891  1.8  0.1 296684 63772 ?        Ssl  11:09   0:00 python3 /app/metrics.py
    root     2506903  0.0  0.0   7008  2208 pts/0    R+   11:09   0:00 grep --color=auto metrics
    root@noc1(INTERNAL):/etc# timeout -s 9 15s /usr/bin/docker exec 439b5f929468 python3 /app/metrics.py
    2024-07-09 11:11:05,544 - INFO - Connected to central gateway.
    2024-07-09 11:11:05,546 - INFO - Connected to lumi gateway.
    2024-07-09 11:11:05,546 - INFO - Attempting to create new cluster for central. Attempt 1
    Killed
    root@noc1(INTERNAL):/etc# ps aux | grep metrics
    root     1593181  0.0  0.0  12288     4 ?        Sl+  Apr08   0:00 vim metrics.py
    root     2506700  0.1  0.1 296684 63860 ?        Ssl  11:03   0:00 python3 /app/metrics.py
    root     2506842  0.2  0.1 296684 63748 ?        Ssl  11:06   0:00 python3 /app/metrics.py
    root     2506891  0.5  0.1 296684 63772 ?        Ssl  11:09   0:00 python3 /app/metrics.py
    root     2507022  4.0  0.1 296684 63692 ?        Ssl  11:11   0:00 python3 /app/metrics.py
    root     2507032  0.0  0.0   7008  2200 pts/0    S+   11:11   0:00 grep --color=auto metrics
    root@noc1(INTERNAL):/etc# ps aux | grep metrics
    root     1593181  0.0  0.0  12288     4 ?        Sl+  Apr08   0:00 vim metrics.py
    root     2506700  0.0  0.1 296684 64924 ?        Ssl  11:03   0:01 python3 /app/metrics.py
    root     2506842  0.0  0.1 296684 64856 ?        Ssl  11:06   0:00 python3 /app/metrics.py
    root     2506891  0.0  0.1 296684 64880 ?        Ssl  11:09   0:00 python3 /app/metrics.py
    root     2507022  0.0  0.1 296684 64800 ?        Ssl  11:11   0:00 python3 /app/metrics.py
    root     2507977  0.0  0.0   7008  2208 pts/0    S+   11:30   0:00 grep --color=auto metrics
    root@noc1(INTERNAL):/etc# timeout -s 9 15s --foreground /usr/bin/docker exec 439b5f929468 python3 /app/metrics.py
    timeout: failed to run command ‘--foreground’: No such file or directory
    root@noc1(INTERNAL):/etc# timeout --foreground -s 9 15s  /usr/bin/docker exec 439b5f929468 python3 /app/metrics.py
    2024-07-09 11:31:23,226 - INFO - Connected to central gateway.
    2024-07-09 11:31:23,227 - INFO - Connected to lumi gateway.
    2024-07-09 11:31:23,227 - INFO - Attempting to create new cluster for central. Attempt 1
    root@noc1(INTERNAL):/etc# ps aux | grep metrics
    root     1593181  0.0  0.0  12288     4 ?        Sl+  Apr08   0:00 vim metrics.py
    root     2506700  0.0  0.1 296684 64924 ?        Ssl  11:03   0:01 python3 /app/metrics.py
    root     2506842  0.0  0.1 296684 64856 ?        Ssl  11:06   0:00 python3 /app/metrics.py
    root     2506891  0.0  0.1 296684 64880 ?        Ssl  11:09   0:00 python3 /app/metrics.py
    root     2507022  0.0  0.1 296684 64800 ?        Ssl  11:11   0:00 python3 /app/metrics.py
    root     2508000  3.9  0.1 296684 63764 ?        Ssl  11:31   0:00 python3 /app/metrics.py
    root     2508011  0.0  0.0   7008  2248 pts/0    S+   11:31   0:00 grep --color=auto metrics
    
    

    正如你所见,通过 docker exec 运行的脚本的超时不起作用

  • 好吧,我试过了,它在 invitation_instructions.html.erb 文件中给出了同样的错误:缺少要链接到的主机!请提供 :host 参数,设置 default_url_options[:host],或将 :only_path 设置为 true。在开发、生产和测试文件中写入:config.action_mailer.default_url_options = { host: \'localhost:3000.com\' }

  • @engineersmnky 我通过从 rails 控制台添加回溯来编辑我的帖子当我在本地查看我的 gems 位置时,我没有看到 \'graphql-client-0.19.0\' 文件夹,只有 \'graphql-client-0.18.0\'

  • 脚本正在运行什么代码;你能在代码本身中设置超时吗?为什么你需要

  • 好的,我在 application.rb 文件上设置了 config.action_mailer.default_url_options = { host: \'http://localhost:3000/\' } 并且它起作用了!

  • 听起来你可能已经发现了你的问题,你使用的是不同的版本(发布时间相隔近两年)。

  • 该错误是由于 graphql-client gem 的更新引起的

    此 gem 今年已更新,之前的版本是 2022 年的

    我使用的 shopify gem 版本(9.0.2)使用的是 graphql-client 的最新版本,与此版本的 shopify gem 不兼容

    我在 Gemfile 中强制使用以前的版本,现在它又可以正常工作了

    感谢 engineersmnky 帮助

  • 详细一点的细节,比如要调用什么函数或者脚本 我不太明白dhcpcd源代码,能不能帮帮我或者有没有解释dhcpcd源代码的相关资料我...

    详细一点的细节,比如要调用什么函数或者脚本我不太理解dhcpcd源代码,能不能帮帮我或者有没有相关资料解释dhcpcd源代码

    我不太了解 dhcpcd 源代码,

  • 在查看源代码之前,请先了解协议。维基百科上有

  • 引用 17

    在安装 python-for-android 的先决条件时,我尝试安装 lbzip2,但无法安装。我使用的命令:$ sudo apt-get install -y lbzip2 但是,我得到了以下输出......

    在安装 python-for-android 的先决条件时,我尝试安装 lbzip2,但无法安装。

    我使用的命令:

    $ sudo apt-get install -y lbzip2
    
    

    但是,我收到以下输出和错误:

    [sudo] password for user00: 
    Reading package lists... Done
    Building dependency tree... Done
    Reading state information... Done
    Package lbzip2 is not available, but is referred to by another package.
    This may mean that the package is missing, has been obsoleted, or
    is only available from another source
    
    E: Package 'lbzip2' has no installation candidate
    

    我在网上几乎找不到任何关于 lbzip2 的参考资料,也没有找到有关这个问题的任何信息。有人能告诉我这里出了什么问题吗?

  • 引用 18

    我也检查过了,在网上几乎找不到关于 lbzip2 的东西。所以也许错误的说法是正确的

  • 话虽如此,我发现这个

  • 是一个有效的 Debian 稳定包。所以你的问题是添加

返回
作者最近主题: