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
希望对您有所帮助!
我有一个 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
希望对您有所帮助!