指定锚点时,路径助手将“ / search?option = ...”更改为“ /search.option = ...”

撤消

我对Rails的路径助手有一个看似简单的案例。我的路线很简单:

get 'search', to: 'search#search_results'

$ rails routes
...
search GET    /search(.:format)                     search#search_results

我需要option=graph在当前页面的查询字符串中注入一个参数。这可以按预期工作:

<%= link_to "Graphs", search_path(request.query_parameters.merge({:option => "graphs"})) %>

给出这样的链接:

http://localhost:3000/search?body=&commit=Search&feedback=&option=graphs&reason=&site=&title=&user_rep_direction=%3E%3D&user_reputation=0&username=&utf8=%E2%9C%93&why=foo

但是,当我指定anchor参数时,会发生一些奇怪的事情:

search_path(request.query_parameters.merge({:option => "graphs"}), anchor: "graph-1")
http://localhost:3000/search.body=&commit=Search&feedback=&option=graphs&reason=&site=&title=&user_rep_direction=%253E%253D&user_reputation=0&username=&utf8=%25E2%259C%2593&why=foo#graph-1

锚已按预期添加,但是?开始查询字符串的变成.-,因为它是无法识别的格式,这会激怒控制器。

为什么会发生这种情况,我该如何解决?

在Ruby 2.2.2上运行Rails 5 beta 4

波拉玛

经过一些测试,结果表明合并参数时应包括锚点

search_path(request.query_parameters.to_h.merge({option: "graphs", anchor: "graph-1")})

说明:您的方法,即:

search_path(request.query_parameters.merge({:option => "graphs"}), anchor: "graph-1")

实际上将两个单独的哈希作为参数传递给search_path助手,而不只是一个。但是,在帮助程序定义代码中,仅最后一个哈希参数被用作帮助程序的实选项参数。其他参数的处理方式有所不同。

最后,该anchor参数被帮助程序理解为格式说明符(我通过调试帮助程序中的路径构造发现了这一点,但无法指向源代码中的确切位置),这就是为什么生成的路径包含.资源名称后的

更新:请注意,query_parameters还必须将其转换为哈希值,因为它们通常属于,ActionController::Parameters并且在路径帮助器中的处理方式也有所不同。统一所有参数和Hash的锚点后,路径应正确。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将OPTION方法更改为POST?

来自分类Dev

如何使用jQuery将<option>更改为<otpgroup>

来自分类Dev

如果变量 true 将 <option> 更改为禁用

来自分类Dev

在Scalaz中将Future [Option [List [List [Double]]]更改为Future [Option [List [List [Double]]]]

来自分类Dev

我将创建的下拉菜单从select和option标记更改为Hoverable Dropdown菜单。我应该如何在其中传递值

来自分类Dev

如何在Wordpress的Redux框架中将默认表wp_option更改为wp_sitemeta?

来自分类Dev

将Option [String]拆分为(Option [String],Option [String])

来自分类Dev

将Option <&T>转换为Option <T>

来自分类Dev

将Option [String]转换为Option [Path]

来自分类Dev

将Option <&T>转换为Option <T>

来自分类Dev

在<option>标记上更改光标?

来自分类Dev

Hibernate Search:用于索引的后台助手

来自分类Dev

如何使用Angular JS在更改/选择另一个<select> <option>的项目时禁用<select> <option>

来自分类Dev

Excel:将“,”更改为“。”

来自分类Dev

将按钮更改为<a>

来自分类Dev

将 '\\A' 更改为 '\A'

来自分类Dev

如何在锚点和按钮上使用[role = option]

来自分类Dev

新的Option()与<option>

来自分类Dev

Angular 2在更改时获取<option>的值

来自分类Dev

单击按钮时激活<option>

来自分类Dev

将`Future [Option [X]]`转换为`Option [Future [X]]`

来自分类Dev

如何将Option [String]转换为Option [Int]?

来自分类Dev

将Windows路径更改为Unix路径

来自分类Dev

将点的路径更改为虚拟环境

来自分类Dev

将ImageView更改为黑白

来自分类Dev

将CSS更改为(索引)?

来自分类Dev

将数组更改为ArrayList

来自分类Dev

将列表更改为int

来自分类Dev

将RequireJs更改为AlmondsJs

Related 相关文章

热门标签

归档