0

尝试使用这种格式http://landing.com?data=123解析 URL - 我能够通过 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::Addressable但确保它在我的环境中,gem which addressable/uri

4

2 回答 2

2

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

u = params[:data]
于 2016-07-05T17:22:35.573 回答
0

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

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

请注意,您不应该在视图中调用操作方法,它们由 Rails 框架“调用”。

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

# view
<%= @u %>
于 2016-07-06T15:25:59.137 回答