尝试使用此格式解析网址http://landing.com?data=123 - 我已经能够通过irb获取数据:
require "addressable/uri"
uri = Addressable::URI.parse("http://landing.com?data=123")
uri.query_values['data']
=> '123'
但我仍然坚持如何在Rails视图中与'数据'进行交互。我已经尝试将它包含在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可寻址/ uri
答案 0 :(得分:2)
控制器已经解析了很多查询信息。您可以使用params
访问它。在这种情况下,您可以使用
u = params[:data]
答案 1 :(得分:0)
正如SophieDéziel所说,如果它是在app请求下,你可以通过params hash访问你的查询值。 params存在于您的控制器和视图中。
如果您正在谈论从第三方来源获得的硬编码URL或URL,您需要在控制器中创建一个实例变量(@u = ...),以便在您的视图中使用。
请注意,您不应该在视图中调用操作方法,它们由Rails框架“调用”。
# controller
def my_action
# .....
@u = uri.query_values['data']
end
# view
<%= @u %>