Rails 3 UJS:使用link_to时传递参数

min*_*eow 27 ruby-on-rails-3

除了身份证之外,我们如何传递额外的参数

#we want to pass in additional params as well
<%= link_to  "bleh", like_path(answer), :add_param=>2 , :remote=>"true" ,:method=>:post %>
Run Code Online (Sandbox Code Playgroud)

Fre*_*röm 34

您可以将路径函数中的参数作为URL的一部分传递.就像是:

<%= 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
Run Code Online (Sandbox Code Playgroud)

但我认为在这种情况下你需要摆脱纯粹基于资源的路径助手.查看文档以获取想法.


Dan*_*ski 25

如果您不想将参数放入路径助手中 - 可能是因为有很多参数或者在生​​成页面时您不知道它们 - 您也可以将它们放入data-params属性中.

例如:

link_to "Add to cart", cart_path, 
    data: { method: :post, remote: true, params: { product_id: 123 }.to_param }
Run Code Online (Sandbox Code Playgroud)

生成的HTML如下所示:

<a data-params="product_id=123" data-remote="true" data-method="post" 
    href="/cart" rel="nofollow">Add to cart</a>
Run Code Online (Sandbox Code Playgroud)

JQuery UJS处理程序附加从data-params属性到POST请求主体的所有内容.

从概念上讲,首先使用路径助手没有太大区别,但是如果你想在Javascript中修改参数,这个解决方案可能会产生更优雅的代码.

  • 它没有记录(至少我没有找到),但它在代码中.这也是一个令人惊讶的简单声明,它提供了这个功能:https://github.com/rails/jquery-ujs/commit/dad6982dc592686677e6845e681233c40d2ead27 (2认同)