ruby-on-rails - 控制器如何响应以从 Ruby 中的另一个网站重定向的操作
问题描述
我是红宝石的新手。我想将包含 API 密钥和其他一些字段数据的表单数据发布到另一个网站,该网站将验证并向我的网站发送 http 响应 200 或 400。如果我能够连接到 api,该网站会响应一个 URL 重定向到我的网站,并带有我的网站将响应的附加查询字符串。我不知道如何做以下事情:
如何让我的网站响应我通过控制器和操作从网站获得的重定向。假设控制器是:
class BooksController < ApplicationController
def create
Do something
flash[:notice] = " book was created successfully"
end
end
配置我的路由以响应重定向
这是我试图在视图中使用的代码
<form action="/master/master" method="POST" >
<script
src="https://js.example.co/v7/inline.js"
data-key= <%= ENV["EXAMPLE_PUBLIC_KEY"] %>
data-email= <%= current_user.email %>
data-booktitle= <%= current_user.books.title %>
data-ref= <% SecureRandom.random_number %>
>
</script>
</form>
解决方案
这只是如何将表单发布到外部网站的基础知识。您必须自己填写详细信息,因为我不知道外部网站做什么或该脚本应该完成什么。
设置表单以发布到远程 url 非常简单:
# Rails 4 and earlier
<% form_tag("http://example.com/test.php", method: :post) %>
<%= hidden_field_tag :key, ENV["EXAMPLE_PUBLIC_KEY"] %>
<%= hidden_field_tag :title, current_user.books.title %>
<%= hidden_field_tag :ref, SecureRandom.random_number %>
<%= submit_tag %>
<% end %>
# Rails 5+
<%= form_with(url: "http://example.com/test.php", method: :post) do |f| %>
<%= f.hidden_field :key, value: ENV["EXAMPLE_PUBLIC_KEY"] %>
# ...
<% end %>
处理来自外部网站的回调与您的 rails 应用程序中的任何其他路线并没有真正的不同:
get '/some/path', to: 'foo#bar'
您只需创建一个响应 GET 的路由,并配置处理表单提交的任何服务以重定向回它。
推荐阅读
- elasticsearch - Elasticsearch 6.8 match_phrase search N-gram tokenizer 效果不佳
- sql - 如何在一个列上对 sql server 进行透视,但重命名为动态列
- azure-devops - Azure Devops 在部署 SSAS 表格模型时隐藏关键列
- sql - 为什么 SQL Server 将精度降低到 3 或 6 位
- android - 如何在另一种 Activity 方法中使用 LiveData 值?
- python - 从目录中的多个 csv 文件中绘制 2 列
- qr-code - 为什么 zbar 和 zxing 无法解码这个条形码?
- routes - Symfony 5 - 路由 - 错误分配的可选参数
- flutter - 填充前的未来返回列表
- google-apps-script - 保存在 Google Drive 中的 HTML 文件将被解析为电子表格