2015-02-16 3 views
0

У меня есть страница, которая при нажатии кнопки я хочу запустить метод на стороне рельсов и обновить страницу, соответственно:рендеринг элемента через AJAX

метода контроллера:

def disallow_part_for_augment 
    disallowed_part = AvailableAugmentsPart.create(part_id: params[:part_id], available_augment_id: params[:id], disallow: true) 
    disallowed_part.save() 

    respond_to do |format| 
    format.html { redirect_to v2_parts_url } 
    format.js 
    end 
end 

Ajax Метод:

$ -> 
    $('#disallow-part').click (e) -> 
    console.log $(this).attr("href") 
    e.preventDefault() 
    $.ajax 
     url: $(this).attr("href") 
     type: 'PUT' 
     //data: 
    return 

часть с вызовом метода хелперов является то, что я хочу обновленный

  <td><%= au.augment.code %></td> 
      <%= show_part_group_for_allowed_parts(part_group.name, @part.id, au.id) %> 
      <td><%= part_group.part_category.name %></td> 

метод Helper

def show_part_group_for_allowed_parts(part_group_name, part_id, available_augment_id) 
    html = "" 

    if AvailableAugmentsPart.is_part_disallowed(part_id, available_augment_id).exists? 
     html << "<td class='status color-red'>Disallowed</td>" 
    else 
     html << "<td>#{part_group_name}</td>" 
    end 
    return raw(html) 
    end 

Ссылка для запуска события:

<%= link_to('DISALLOW', "disallow_part_for_augment/#{au.id}", id: 'disallow-part', class: 'btn btn-mini btn-primary', title: 'Disallow', remote: true) %> 

ответ

0

Вызов format.js в контроллере будет искать шаблон disallow_part_for_augment.js.erb, и отправить его в браузер, где он будет выполнен , Итак, вы можете сделать то, что вам нужно сделать, чтобы обновить страницу.

Чтобы легко найти часть для обновления вы хотите добавить класс или идентификатор к нему (например, в вашем помощнике):

html << "<td id='part-#{part_id}' class='status color-red'>Disallowed</td>" 

Таким образом, вы можете ссылаться на него disallow_part_for_augment.js.erb так:

$("#part-<%= @disallowed_part.part_id %>") 
    .replaceWith(
    "<%= escape_javascript(show_part_group_for_allowed_parts(...)) %>"); 
Смежные вопросы