生成用户选择模型控制器的 URL 二维码#Show in Rails

Generate qr-code which is URL of user-selected-Model's Controller#Show in Rails

在 rails 中寻找有关 design/architecture 的一般指导。

用例/目标:

用户可以到网站上搜索Mortgages(数据库中的型号)的列表:

  1. 用户将select单次按揭
  2. 在 selecting 之后,他们将在屏幕上收到一个 QR 码,即 URL 用于 MortgageController#show 方法,用于所选的特定 Mortgage

强调一下:当他们select抵押的时候,他们不会去MortgageController#show,而是需要返回一个页面包含代表他们 select 编辑的抵押贷款的 URL 到正确 MortgageController#show 的二维码。

上下文: QR 代码页将与物理抵押文件一起打印、扫描到文档成像系统中。文档成像系统将解析 QR 码,点击 MortgageController#show,接收 JSON "describing"/代表特定扫描的 Mortgage。 (使用指向 JSON 的 Qr 码,而不是原始的 JSON,因为扫描仪使用 QR 码比使用文本更好。)

我想我非常了解事情的 MortgageController#show 方面——它只是返回模型 Mortgage 的 JSON 表示。

事情变得模糊:

我想用户search/select抵押的地方可能是MortgageController#index方法。

但是如果我对每个 Mortgage 都有一个 get QR Code link,它是否应该像 qr_code 这样在 MortgageController 上使用自定义方法,这决定了合适的URL需要做成二维码返回吗?

我不确定如何组织生成指向 MortgageControllershow 方法的二维码的部分,以及它的管道将如何工作。是否可以从 Model 的列表中知道哪个 select 来自 link 或 form_for 标签,如果那个 link 没有不使用控制器的标准 show 方法吗? (因为我不能使用那个方法...那是将要返回的方法 JSON!)

我对此很困惑,而且是 Rails 的新手。任何想法表示赞赏!

我会尽力回答您的所有问题:

  1. 是的,列出抵押贷款的行动应该是MortgageController#index
  2. 对于 QR 视图,您有多种选择。一种方式,可能是最纯 REST 的方式,您将使用 format: :qr 对该特定抵押调用 MortgageController#show,您为该场合定义的 MimeType(URL 将是 /mortgages/2.qr,form_for 块中的路径将是 mortgage_path(mortgage, format: :qr)。在控制器端,您将使用 respond_to |format| 结构处理此问题。
  3. 另一个更简单的选择是定义一个非 REST 操作来呈现 QR:MortgageController#qr_code。您在 routes.rb 文件中这样定义的操作:
resources :mortgages do
  get :qr_code, on: :member
end
  1. 作为奖励曲目(未包含在您的问题中),您可以使用 rqrcode_png gem/mortgage/3/qr_code 视图中生成和打印二维码。