卡在解析 URL 并在视图中使用它

Stuck in parsing URL and work with it in a view

尝试用这种格式解析 URL http://landing.com?data=123 - 我已经能够通过 irb 获取数据,例如:

require "addressable/uri"
uri = Addressable::URI.parse("http://landing.com?data=123")
uri.query_values['data']
=> '123'

但我一直在研究如何在 Rails 视图中与 'data' 进行交互。我试过将它包含在 Controller 中(pages_controller.rb 在我的示例中),例如:

class PagesController < InheritedResources::Base

  def test
    uri = Addressable::URI.parse("<%= request.original_url %>")
    u = uri.query_values['data']
  end

end

但不知道如何提取要在我的视图中使用的数据。对此有何指导?

如果我打开其中一个视图,比如我调用 'test' 方法的地方 - 我会得到 未初始化的常量 PagesController::Addressable 但确保它在我的环境 gem 其中 addressable/uri

控制器已经解析了很多查询信息。您可以使用 params 访问它。在这种情况下,您可以使用

u = params[:data]

正如 Sophie Déziel 所说,如果是在应用程序请求下,您可以通过 params 哈希访问您的查询值。参数存在于您的控制器和视图中。

如果您谈论的是硬编码 URL 或从 3rd 方来源获得的 URLS,则需要在您的控制器 (@u = ...) 中创建一个实例变量,以便在您的视图中可用。

请注意,您不应该在视图中调用操作方法,它们是 'invoked' 由 Rails 框架提供的。

# controller
def my_action
  # .....
  @u = uri.query_values['data']
end

# view
<%= @u %>