2016-07-05 54 views
0

试图解析一个URL这种格式http://landing.com?data=123 - 我已经能够通过像IRB来获取数据:滞留在解析URL和工作与它在视图

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

+0

请问您能提一下您所指的导轨版本吗? – illusionist

回答

2

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

u = params[:data] 
+0

那么,如果数据不属于模型,那么如何在视图/展示我的模型中呈现'数据'? – malditojavi

+1

使用实例变量。 '@ u'而不是'u'。显示URL或用户生成内容的内容时要小心。您可能会在您的应用程序中为XSS攻击创建一个漏洞。 –

+0

@SophieDéziel+1对'XSS'漏洞警报 – illusionist

0

索菲Déziel说,如果是下应用程序的要求,可以通过PARAMS哈希访问您查询的值。 params存在于你的控制器和视图中。

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

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

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

# view 
<%= @u %>