ruby-on-rails 如何在ActiveModel示例中使用url_for时添加参数?

mklgxw1f  于 2023-02-26  发布在  Ruby
关注(0)|答案(1)|浏览(135)

我想在链接到各种对象时添加一个参数。
我知道我可以将ActiveModel示例传递给url_for以生成适当的URL:

url_for(@my_object) # => /my_objects/1

但是当我尝试向生成的URL添加参数时,没有成功。

url_for(@my_object, foo: 'bar') # => ArgumentError: wrong number of arguments (given 2, expected 0..1)

现在我使用的是url_for(@my_object) + '?foo=bar',但它很难看,也很脆弱,我很想找到一个更干净/更坚固的解决方案。

4sup72z8

4sup72z81#

哈哈!在搜索链接到相关API的文档时,我发现url_for在幕后使用了**polymorphic_path**,这正是我所需要的,并接受附加参数作为最后一个参数。
我现在可以替换

url_for(@my_object) + '?foo=bar' # Don't do this

用更健壮的表达式

polymorphic_path(@my_object, foo: 'bar')  # This is much better
polymorphic_url(@my_object, foo: 'bar') # Or this for a full URL

相关问题