坚持解析URL并在视图中使用它

时间:2016-07-05 17:08:27

标签: ruby-on-rails inherited-resources

尝试使用此格式解析网址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

2 个答案:

答案 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 %>