加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 获取原始参数而不是“加工成哈希”版本

发布时间:2020-12-17 03:52:48 所属栏目:百科 来源:网络整理
导读:Rails 3问题. 如果我发送这样的请求PUT http://myapp/posts/123?post [title] =你好 然后在我的控制器中我得到params = {:id = 123,:post = {:title = “你好”}} 这通常很好,通常用于例如Post.create(params [:post]) 但是,在这种情况下,我需要访问para
Rails 3问题.

如果我发送这样的请求PUT http://myapp/posts/123?post [title] =你好

然后在我的控制器中我得到params = {:id => 123,:post => {:title => “你好”}}

这通常很好,通常用于例如Post.create(params [:post])

但是,在这种情况下,我需要访问params的’raw’形式,所以我可以命令它们拉出值,将它们全部作为简单的字符串处理,即我希望它们列出,所以param名称是“post [标题]“和参数值是”你好“.

有没有办法得到这些价值观?我认为可能有一种请求的方法,它有原始的拉链形式的参数但我找不到一个.

我试图将哈希转换回带有to_param的字符串,但这看起来很脏但可能是不必要的.

作为奖励,我希望它忽略:id参数,字面上只是参加了后面的部分?在原始请求中.事实上,如果我可以回到原始请求字符串,即“http:// myapp / posts / 123?post [title] = hello”那么那样做:我可以分开吗?并从那里拿走它.我刚刚想到我可以从标题中得到它.在此期间,如果有人知道更好的方式,请告诉我,请:)

感谢任何建议 – 最多

解决方法

请不要手工解析.从 Rails request获取URI:

url = request.url
# Or,depending on the Rails version and stack
url = request.request_uri
# Or even
url = request.scheme + '://' + request.host_with_port + request.fullpath

request.url的返回值似乎取决于你的服务器堆栈,request.request_uri应该修复它,但似乎不存在于Rails 3.1中.第三个“自己构建”方法应该在各处产生一致的结果.叹.

然后,一旦你有了URI,使用URI.parseURI.decode_www_form来解析它:

u = URI.parse(url)
q = URI.decode_www_form(u.query)
# if u.query was "a=b&c=d&a=x" then q is
# [["a","b"],["c","d"],["a","x"]]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读