尝试解析这种格式的网址 http://landing.com?data=123 - 我能够通过irb获取数据,如下所示:
require "addressable/uri"
uri = Addressable::URI.parse("http://landing.com?data=123")
uri.query_values['data']
=> '123'
但是我被困在如何在Rails视图中与这些"数据"进行交互。我尝试将其包含在控制器(我的示例中为 pages_controller.rb)中,例如:
class PagesController < InheritedResources::Base
def test
uri = Addressable::URI.parse("<%= request.original_url %>")
u = uri.query_values['data']
end
end
但是不知道如何提取该数据以在我的视图中使用。对此有什么指导吗?
如果我打开其中一个视图,例如我称之为"测试"方法 - 我得到未初始化的常量 PagesController::可寻址,但确保它在我的环境中与可寻址/URI 的 gem 一起
控制器已经解析了很多查询信息。您可以使用 params
.在这种情况下,您可以使用
u = params[:data]
正如Sophie Déziel所说,如果它是在应用程序请求下,您可以通过params hash访问查询值。 参数存在于控制器和视图中。
如果您谈论的是硬编码的 URL 或从第三方来源获得的 URL,则需要在控制器 (@u = ...) 中创建一个实例变量以在您的视图中可用。
请注意,您不应该在视图中调用操作方法,它们由 Rails 框架"调用"。
# controller
def my_action
# .....
@u = uri.query_values['data']
end
# view
<%= @u %>