【问题标题】:Generate URL (url_for) with Ruby On Rails使用 Ruby On Rails 生成 URL (url_for)
【发布时间】:2017-12-30 23:22:49
【问题描述】:

如何在 API 模式下使用应用程序为邮件生成 url?

我想生成一个 URL 类型:“host/confirmation/token”?

我测试过:

<%= url_for("confirm/#{@token}") %>

结果:

confirm/JtuQW54DkZXtAnhm

但是主机不存在,如何将“主机”放在里面?

我配置了:

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

【问题讨论】:

  • url_for 定义说only_path 默认是true,你试过only_path: false 作为url_for 调用的参数吗?

标签: ruby-on-rails ruby routes url-for


【解决方案1】:

您只需在 url_for 调用中将 :only_path 设置为 false,例如:

<%= url_for({ action: "confirm", token_id: @token, controller: "controller_name", only_path: false }) %>

【讨论】:

  • config.action_mailer.default_url_options = { host: "lol.com", only_path: false } 我测试了这个但同样的问题
  • 不是在您的default_url_options 上,而是在您的url_for 电话上
  • ActionView::Template::Error: wrong number of arguments (given 2, expected 0..1),不可能
  • 刚刚用正确的语法编辑了我的答案,但基本上,您必须定义操作、控制器和参数(如果 url 包含变量,例如创建接受 ids 的路由,您可以将其传递为 @ 987654329@。您也可以随时在rails api dock上阅读更多信息
【解决方案2】:

你没有放你的路由文件,我不知道如何处理路由文件。

你可以关注这样的事情

url_for controller: 'tasks', action: 'testing', host: 'lol.com'
# => 'http://lol.com/tasks/testing'

更多解释请到API

【讨论】:

  • ActionView::Template::Error: No route matches,它的API模式,服务器和客户端的url不同,我想根据“production”或“developpemnt”env生成url
  • 这就是为什么需要检查你的路线文件
  • 路由文件包含 API 的路由,没有客户端的路由,电子邮件中的链接重定向到 CLIENT,没有 API。 url_for路由映射,客户端的路由不一样,懂吗?
  • 对不起,我以前没有理解这一点,但在这种情况下,我将使用与 url_for 不同的东西来做到这一点。尝试将您的 URL 域保存在应用程序控制器上定义的某个变量或方法中,并在构建路由时获取它
猜你喜欢
  • 2012-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-23
  • 2013-04-18
  • 2011-08-02
  • 2013-05-08
相关资源
最近更新 更多