Javascript 通过ajax渲染元素
我有一个页面,当单击按钮时,我希望在rails端运行一个方法,并相应地更新页面: 控制器方法:Javascript 通过ajax渲染元素,javascript,jquery,ruby-on-rails,ajax,Javascript,Jquery,Ruby On Rails,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
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
def显示允许的零件的零件组(零件组名称、零件id、可用的扩充id)
html=“”
如果AvailableArgmentSpart.is\u part\u不允许(part\u id,available\u augment\u id)。是否存在?
html在您的控制器中调用format.js
将查找\u augment.js.erb
的模板disallow\u part\u,并将其发送到浏览器中执行。因此,在这里,您可以执行更新页面所需的操作
要轻松找到要更新的零件,您需要向其添加类或ID(例如,在您的助手中):
<%= link_to('DISALLOW', "disallow_part_for_augment/#{au.id}", id: 'disallow-part', class: 'btn btn-mini btn-primary', title: 'Disallow', remote: true) %>
html << "<td id='part-#{part_id}' class='status color-red'>Disallowed</td>"
$("#part-<%= @disallowed_part.part_id %>")
.replaceWith(
"<%= escape_javascript(show_part_group_for_allowed_parts(...)) %>");