[英]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.