рельсы 3 сухой ненавязчивый javascript - PullRequest
1 голос
/ 20 января 2011

Я изменяю все на ненавязчивый javascript, так как я думаю, что это значительно облегчает отладку и т.д.

У меня есть что-то вроде:


$(document).ready(function(){

  $('#photos_link').click(function()
  {
    select_tab('main', 'photos', $(this));
  });

  $('#dealership_link').click(function()
  {
    select_tab('main', 'dealership', $(this));
  });

  $('#dealership').hide();
});

как вы видите, у меня есть 2 очень похожих конструкции, я бы хотел их высушить, есть идеи?

Ответы [ 2 ]

1 голос
/ 20 января 2011

Вот два чисто рефактора JS:

$(document).ready(function(){
  $('#photos_link, #dealership_link').click(function(){
    select_tab('main', $(this).attr('id').match(/(.*)_link/)[1], $(this));
  });

  $('#dealership').hide();
});

и

$(document).ready(function(){
  $.each(['photos', 'dealership'], function(key, value) { 
    $('#' + value + '_link').click(function(){
      select_tab('main', value, $(this));
    });
  });

  $('#dealership').hide();
});

Я бы лично предпочел первый.

0 голосов
/ 20 января 2011

Создайте вспомогательный метод в ApplicationHelper (или соответствующем вспомогательном):

def select_tab_click_event(tab)
  js =<<JS
    $('##{tab}_link').click(function()
    {
      select_tab('main', '#{tab}', $(this));
    });
JS
  js.html_safe
end

Затем вызовите его из своего представления:

$(document).ready(function(){
  <%= select_tab_click_event('photos') %>
  <%= select_tab_click_event('dealership') %>
}
...