: с предложением, запрещающим выполнение действия при вызове link_to_remote - PullRequest
0 голосов
/ 27 мая 2010

У меня проблемы с предложением: with в следующем коде.

-counter.times do |c|
  -elem = @tags[c]
  #{elem.name}#{link_to_remote image_tag('x.png'), :url => {:controller => 'questions', :action => 'remove_tag_from_cart'}, :with => "'tag_remove=' + #{elem}"}

Если я уберу предложение :with, то remove_tag_from_cart будет выполнено, когда я нажму на ссылку с изображением. Но я ничего не могу сделать с elem, потому что он никак не передается в remove_tag_from_cart.

Если я оставлю здесь предложение :with, то remove_tag_from_cart вообще не будет выполнено!

Насколько я понимаю,: с должен позволить мне сделать это в remove_tag_from_cart:

def remove_tag_from_cart
  puts params[:tag_remove].name
end

Опять же, если я включу предложение: with, этот метод не запускается.

Я бы хотел просто передать elem или elem.id на remove_tag_from_cart, чтобы я мог использовать его (чтобы найти вещи и т. Д.). Является ли это (то есть, передача его с помощью: с) лучшим / правильным способом сделать это? Если нет, каковы мои альтернативы?

1 Ответ

1 голос
/ 27 мая 2010

Используйте firebug для отслеживания вызовов ajax, просмотра сгенерированного HTML и т. Д.

:with опция (из документы ):

Выражение JavaScript, определяющее параметры для XMLHttpRequest. любой выражения должны возвращать действительный URL Строка запроса.

Пример:

:with => "'name=' + $('name').value"

Вы делаете :with => "'tag_remove=' + #{elem}"

Элемент выглядит как объект ActiveRecord, поэтому кажется, что вы действительно хотите передать его id с помощью params. Но вы можете сделать это с обычными параметрами URL, не используя javascript :with:

link_to_remote image_tag('x.png'), :url => {:controller => 'questions', :action => 'remove_tag_from_cart', :tag_remove_id => elem.id}

и в контроллере использовать

Tag.find(params[:tag_remove_id])
...