除了ID
之外,我们如何传递额外的参数#we want to pass in additional params as well
<%= link_to "bleh", like_path(answer), :add_param=>2 , :remote=>"true" ,:method=>:post %>
答案 0 :(得分:34)
您可以将路径功能中的参数作为网址的一部分传递。类似的东西:
<%= link_to "bleh",
like_path(:answer_id => 123, :add_param => 2),
:remote=> true , :method=> :post %>
# would result in something like
# yourapp.com/like/aswer/3?add_param=2
但我认为在这种情况下你需要摆脱纯粹的基于资源的路径助手。查看documentation的想法。
答案 1 :(得分:25)
如果您不想将参数放入路径助手中 - 也许是因为有很多参数或者在生成页面时您不知道它们 - 您也可以将它们放入 {{ 1}} 属性。
例如:
data-params
生成的HTML如下所示:
link_to "Add to cart", cart_path,
data: { method: :post, remote: true, params: { product_id: 123 }.to_param }
JQuery UJS处理程序附加从<a data-params="product_id=123" data-remote="true" data-method="post"
href="/cart" rel="nofollow">Add to cart</a>
属性到POST请求正文的所有内容。
从概念上讲,首先使用路径助手并没有太大区别,但如果你想在Javascript中修改参数,这个解决方案可能会产生更优雅的代码。