2013-09-21 2 views
0

Я пытаюсь отобразить частичное всплывающее окно (в идеале модальное, что мне нужно выяснить) при нажатии на «имя группы», которое не основано на каком-либо объекте базы данных, но скорее на основе локальных переменных, полученных из API. Я видел эту более старую должность: Rendering partial in rails modal, но это просто не работает для меня. Когда я нажимаю, я просто направляюсь к корню. В настоящее время я пытаюсь сделать это, используя display: none на «render partial» и функцию .show() при нажатии на «имя группы».Рельсы рендеринга частично с модальными и локальными переменными

Я новичок в Rails и очень стараюсь изучить Javascript, поэтому я не знаю, что происходит не так.

Вот вид:

<div id="groups_show" style="display:none"> 
    <%= render partial: 'groups/group_full', :locals => {group: group} %> 
</div> 
<%= link_to group.name, root_url, class: "groups_showme" %> 

Javascript:

$('.groups_showme').click(function() { 
    $('#groups_show').show(); 
    win = new Window({title: "Share This", width:200, height:150, destroyOnClose: true,  
    recenterAuto:false}); 
    win.setContent('#groups_show',true,true); 
    win.show(); 
} 

правок: FINAL КОД ЧТО РАБОТАЛ

$('.groups_showme').on('click', function(e) { 
e.preventDefault(); 
$('#groups_show').show(); 
win = new Window({title: "Share This", width:200, height:150, destroyOnClose: true, recenterAuto:false}); 
win.setContent('#groups_show',true,true); 
win.show(); 
return false; 
}); 

ответ

2

Две ошибки в JS кода, связанного с этим поведением:

  1. click(function() должен иметь аргумент e
  2. e.preventDefault() следует поставить на первое. Для последней позиции, эквивалент return false
  3. [опционально] лучше использовать on вместо click

Итак,

$('.groups_showme').on('click', function(e) { 
    e.preventDefault(); 
    // others 
}); 
+0

Спасибо большое. Я считаю правильным. Хотя по какой-то причине рендер по-прежнему отображается на странице, а не как всплывающее окно. Я не могу понять, почему. –

+0

@MatthewMelone, похоже, что код теперь работает в соответствии с вашим последним выпуском? Кстати, нужен только один метод для остановки ссылки, либо preventDefault, либо 'return false' –

+0

А, спасибо. Если я правильно понимаю, весь win.setContent от прототипа, и я на jQuery. Итак, теперь я пытаюсь изменить jQuery и заканчивать этот беспорядок. '$ ('groups_showme. ') На (' нажмите', функция (е) { e.preventDefault();. $ ('# groups_show') шоу();. вар HTMLString = $ (это) .html(); вар dialog_form = $ ('

Loading
') .dialog ({ AutoOpen: ложная, ширина: 520, модальное: правда, открыто: функция() {$ возврата (это) .text (htmlString); }, close: function() {.... ' –

Смежные вопросы