Подтвердить что ты не робот

Rails 3 UJS: передача параметров при использовании link_to

Как передать дополнительные параметры, кроме ID

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

Ответ 1

Вы можете передавать параметры в функции пути как часть 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

Но я думаю, что в этом случае вам нужно отойти от вспомогательного помощника пути на основе ресурсов. Обратитесь к документации .

Ответ 2

Если вы не хотите вводить параметры в помощник пути - возможно, потому, что их много или вы не знаете их при создании страницы, вы также можете поместить их в 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>

Обработчик JJuery UJS привязывает все атрибуты data-params к телу запроса POST.

Понятно, что нет никакой разницы в использовании помощника путей, но если вы хотите изменить параметры в Javascript, это решение может дать более элегантный код.