Rails: 从URL 传递params 以查看而不查找数据库

Rails: Passing params from URL to view without looking up the database

我有一个 URL 喜欢 example.com/test/THIS_TEXT。现在,当用户访问我的 URL 时,我只想按原样使用其路由 html.erb 视图中的 "THIS_TEXT" 部分。

我知道它不再是 MVC,但我试图通过使流程独立于模型和数据库来避免一些开销。有没有简单的方法直接传URL参数到Rails中查看?

更新:

一些代码:

routes.rb

get "/d/:token", to: "games#show"

games_controller.rb

class GamesController < ApplicationController
    before_action :set_game, only: [ :edit, :update, :destroy]

    def show
        @text = params["token"]
    end
    #other scaffold stuff...
end

显示.html.erb

Your entered text is <%= @text %>

错误

GamesController 中的 ActionController::ParameterMissing#show

缺少参数或值为空

您可以像这样访问参数哈希:

<%= params[:name_of_param] %>

参数的名称与您在 routes.rb

中输入的名称相同

在您的控制器中:

@users_param = params[:users_param]

在您看来:

任何不安全的字符都应该被自动转义,但它可能会很长。这不会触及模型或数据库。它也不是特别反 MVC,它只是碰巧不使用该模型。打破 MVC 会做一些事情,比如从你的 .html.erb 文件执行数据库查询。

您如何在 routes.rb 文件中声明 THIS_TEXT

if if 声明为

get '/test/:this_text'(注意:

然后您可以在您的控制器中以 params[:this_text] 的形式访问它。

所以:

# in routes.rb 

get '/test/:test_text', to: 'tests#show_text'

# in tests_controller.rb

class TestsController < ApplicationController

  def show_text
    @text = params[:test_text]
  end
end

希望对您有所帮助!