轨道上的红宝石 - 卡在解析 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视图中与这些"数据"进行交互。我尝试将其包含在控制器(我的示例中为 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 %>

相关内容

  • 没有找到相关文章