2010-12-07 49 views
26

當如何,我們通過額外PARAMS除了ID的Rails 3 UJS:使用的link_to

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

回答

34

您可以通過在路徑功能參數作爲URL的一部分傳遞PARAMS。例如:

<%= 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的想法。

24

如果你不想把參數到路徑幫手 - 也許是因爲有很多人或者你不知道他們在生成頁面的時候 - 你也可以把它們放進data-params屬性。

例如:

link_to "Add to cart", cart_path, 
    data: { method: :post, remote: true, params: { product_id: 123 }.to_param } 

生成的HTML看起來像這樣:

<a data-params="product_id=123" data-remote="true" data-method="post" 
    href="/cart" rel="nofollow">Add to cart</a> 

jQuery的UJS處理機附着一切從data-params屬性到POST請求體。

從概念上講,首先使用路徑幫助程序沒有多大區別,但是如果要在Javascript中修改參數,此解決方案可能會產生更優雅的代碼。

+1

很好的答案!我正在尋找這樣的東西。我知道Rails魔術師也會爲此做些什麼。你在哪裏找到這個? – Jashwant 2013-12-20 08:05:52