Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails rails 3干爽不显眼的javascript_Ruby On Rails_Ruby On Rails 3_Dry_Unobtrusive Javascript - Fatal编程技术网

Ruby on rails rails 3干爽不显眼的javascript

Ruby on rails rails 3干爽不显眼的javascript,ruby-on-rails,ruby-on-rails-3,dry,unobtrusive-javascript,Ruby On Rails,Ruby On Rails 3,Dry,Unobtrusive Javascript,我把一切都改成了不引人注目的javascript,因为我认为它使调试变得更加容易 我有点像: $(document).ready(function(){ $('#photos_link').click(function() { select_tab('main', 'photos', $(this)); }); $('#dealership_link').click(function() { select_tab('main', 'dealership'

我把一切都改成了不引人注目的javascript,因为我认为它使调试变得更加容易

我有点像:


$(document).ready(function(){

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

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

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


如您所见,我有两个非常相似的结构,我想把它们晾干,有什么想法吗?

在ApplicationHelper(或适当的助手)中创建一个助手方法:

def选择选项卡单击事件(选项卡)

js=在ApplicationHelper(或适当的助手)中创建助手方法:

def选择选项卡单击事件(选项卡)

js=这里有两个纯js重构:

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

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


我个人更喜欢前者。

这里有两个纯JS重构:

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

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


我个人更喜欢前者。

谢谢,第二个看起来更好,它确实重构了一些代码。谢谢,第二个看起来更好,它确实重构了一些代码。就不突兀而言,这与保持表示层与页面结构分离以及在缺少JavaScript的情况下允许功能正常降级有关。因为您的问题是如何干燥代码,所以我将重点放在消除重复,同时保持表示层与其他层分离。帮助程序旨在帮助生成视图,我使用了一个帮助程序来实现这一点,同时也消除了代码中的重复。助手并不意味着包含业务逻辑。这就属于模型了。就非突兀性而言,这与保持表示层与页面结构分离以及在没有JavaScript的情况下允许功能正常降级有关。因为您的问题是如何干燥代码,所以我将重点放在消除重复,同时保持表示层与其他层分离。帮助程序旨在帮助生成视图,我使用了一个帮助程序来实现这一点,同时也消除了代码中的重复。助手并不意味着包含业务逻辑。这属于模型。
$(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();
});