image_to_function в Rails - PullRequest
       19

image_to_function в Rails

0 голосов
/ 06 июня 2010

У меня есть этот метод на рельсах, поэтому у меня есть изображение, вызывающее функцию javascript

def image_to_function(name, function, html_options = {})
  html_options.symbolize_keys!
  tag(:input, html_options.merge({ 
      :type => "image", :src => image_path(name),
      :onclick => (html_options[:onclick] ? "#{html_options[:onclick]}; " : "") + "#{function};" 
      }))
end

Я взял этот код из приложения-помощника исходного кода Redmine, у меня проблема в том, что когда я нажимаю на изображение, оно отправляет POST, кто-нибудь знает, как я могу остановить что?

Вот как я это использую

<%= image_to_function "eliminar-icon.png", "mark_for_destroy(this, '.task')" %>

Большое спасибо!

1 Ответ

0 голосов
/ 06 июня 2010

Если ваше событие onclick возвращает true, ваш браузер следует href, если он возвращает false, ваш браузер не будет следовать. Итак, вот фокус:

def image_to_function(name, function, html_options = {})
  html_options.symbolize_keys!
  tag(:input, html_options.merge({ 
      :type => "image", :src => image_path(name),
      :onclick => (html_options[:onclick] ? "#{html_options[:onclick]}; " : "") + "#{function}; return false;" 
      }))
end

В качестве альтернативы пусть #{function} возвращает true или false и вставляет оператор return перед интерполяцией. Таким образом, вызываемая функция может контролировать, должен ли браузер следовать href.

PS: Возможно, вы захотите заменить tag(:input... конструкцией link_to_function(image_path(name), ..., чтобы вы могли использовать ее и вне форм.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...