簡體   English   中英

通過ajax渲染元素

[英]rendering element via ajax

我有一個頁面,當單擊一個按鈕時,我想在rails側運行一個方法並相應地更新頁面:

控制器方法:

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

調用helper方法的部分是我想要更新的部分

            <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>

輔助方法

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) %>

在控制器中調用format.js將查找模板disallow_part_for_augment.js.erb ,並將其發送到將在其中執行的瀏覽器。 所以在那里你可以做你需要做的更新頁面。

要輕松找到要更新的部分,您需要為其添加一個類或ID(例如在您的幫助程序中):

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(...)) %>");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM